Posted to tcl by kbk at Wed Jan 11 01:46:23 GMT 2012view pretty

#!/usr/bin/env tclsh

package require tdom

set namespaces [list \
		    {} http://www.opengis.net/kml/2.2 \
		    kml http://www.opengis.net/kml/2.2 \
		    gx http://www.google.com/kml/test/2.2 \
		    atom http://www.w3.org/2005/Atom]

proc replaceMultiGeometryWithLineString {doc} {
    foreach node [$doc selectNodes //kml:MultiGeometry] {
	set n2 [$node selectNodes kml:LineString]
	if {[llength $n2] == 1} {
	    [$node parentNode] replaceChild [lindex $n2 0] $node
	} else {
	    puts "$node doesn't have a single linestring"
	}
    }
}

set f [open [lindex $argv 0] r] ; set data [read $f]; close $f
set doc [dom parse $data]
replaceMultiGeometryWithLineString [$doc documentElement]
puts [$doc asXML]