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

  1. #!/usr/bin/env tclsh
  2.  
  3. package require tdom
  4.  
  5. set namespaces [list \
  6. {} http://www.opengis.net/kml/2.2 \
  7. kml http://www.opengis.net/kml/2.2 \
  8. gx http://www.google.com/kml/test/2.2 \
  9. atom http://www.w3.org/2005/Atom]
  10.  
  11. proc replaceMultiGeometryWithLineString {doc} {
  12. foreach node [$doc selectNodes //kml:MultiGeometry] {
  13. set n2 [$node selectNodes kml:LineString]
  14. if {[llength $n2] == 1} {
  15. [$node parentNode] replaceChild [lindex $n2 0] $node
  16. } else {
  17. puts "$node doesn't have a single linestring"
  18. }
  19. }
  20. }
  21.  
  22. set f [open [lindex $argv 0] r] ; set data [read $f]; close $f
  23. set doc [dom parse $data]
  24. replaceMultiGeometryWithLineString [$doc documentElement]
  25. puts [$doc asXML]
  26.