<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: parse code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Mon, 06 Oct 2008 15:46:46 GMT</pubDate>
    <description>DZone Snippets: parse code</description>
    <item>
      <title>Export a GoogleEarth KML file to CSV output</title>
      <link>http://snippets.dzone.com/posts/show/1765</link>
      <description># Parses a GoogleEarth KML file and writes the pertinent data to a CSV file&lt;br /&gt;&lt;br /&gt;#&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;# &lt;kml xmlns="http://earth.google.com/kml/2.0"&gt;&lt;br /&gt;# &lt;Folder&gt;&lt;br /&gt;#   &lt;name&gt;Folder Name&lt;/name&gt;&lt;br /&gt;#   &lt;open&gt;1&lt;/open&gt;&lt;br /&gt;#   &lt;ScreenOverlay&gt;&lt;br /&gt;# 		... Screen Overlays&lt;br /&gt;#   &lt;/ScreenOverlay&gt;&lt;br /&gt;#   &lt;Document&gt;&lt;br /&gt;#     &lt;name&gt;Document Name&lt;/name&gt;&lt;br /&gt;#     &lt;open&gt;1&lt;/open&gt;&lt;br /&gt;#     &lt;Schema parent="Placemark" name="S_Parcel_centroids_SSSS"&gt;&lt;br /&gt;# 		... Schema Def ...&lt;br /&gt;#     &lt;/Schema&gt;&lt;br /&gt;#     &lt;Style id="khStyle722"&gt;&lt;br /&gt;# 		... Style Info ...&lt;br /&gt;#     &lt;/Style&gt;&lt;br /&gt;#     &lt;Folder id="layer 0"&gt;&lt;br /&gt;#       &lt;name&gt;FolderName&lt;/name&gt;&lt;br /&gt;#       &lt;Location&gt;&lt;br /&gt;# 	      &lt;name&gt;Location name 1&lt;/name&gt;&lt;br /&gt;# 	      &lt;description&gt;&lt;![CDATA[...Description text...]]&gt;&lt;/description&gt;&lt;br /&gt;# 	      &lt;styleUrl&gt;#khStyle16037&lt;/styleUrl&gt;&lt;br /&gt;# 	      &lt;Point&gt;&lt;br /&gt;# 	        &lt;altitudeMode&gt;relativeToGround&lt;/altitudeMode&gt;&lt;br /&gt;# 	        &lt;coordinates&gt;-81.85829063169155,29.12257052899974,100&lt;/coordinates&gt;&lt;br /&gt;# 	      &lt;/Point&gt;&lt;br /&gt;# 	      &lt;Column1&gt;Column 1 data&lt;/Column1&gt;&lt;br /&gt;# 	      &lt;Column2&gt;Column 2 data&lt;/Column2&gt;&lt;br /&gt;#       &lt;/Location&gt;&lt;br /&gt;#       &lt;Location&gt;&lt;br /&gt;#         &lt;name&gt;Location name 2&lt;/name&gt;&lt;br /&gt;#         &lt;description&gt;&lt;![CDATA[...Description text...]]&gt;&lt;/description&gt;&lt;br /&gt;#         &lt;styleUrl&gt;#khStyle16037&lt;/styleUrl&gt;&lt;br /&gt;#         &lt;Point&gt;&lt;br /&gt;#           &lt;altitudeMode&gt;relativeToGround&lt;/altitudeMode&gt;&lt;br /&gt;#           &lt;coordinates&gt;-81.85829063169155,29.12257052899974,100&lt;/coordinates&gt;&lt;br /&gt;#         &lt;/Point&gt;&lt;br /&gt;#         &lt;Column1&gt;Column 1 data&lt;/Column1&gt;&lt;br /&gt;#         &lt;Column2&gt;Column 2 data&lt;/Column2&gt;&lt;br /&gt;#       &lt;/Location&gt;&lt;br /&gt;# 	&lt;br /&gt;# 		... More Locations ...&lt;br /&gt;#    &lt;/Folder&gt;&lt;br /&gt;#   &lt;/Document&gt;&lt;br /&gt;# &lt;/Folder&gt;&lt;br /&gt;# &lt;/kml&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require "rexml/document"&lt;br /&gt;include REXML&lt;br /&gt;kmlroot = (Document.new File.new "data.kml").root&lt;br /&gt;nodes = kmlroot.elements.to_a("//Location")&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;	f = File.open("data.csv", "w")&lt;br /&gt;	f &lt;&lt; "id,column1,column2,latitude,longitude"\n"&lt;br /&gt;	id = 1&lt;br /&gt;	nodes.each { |node|&lt;br /&gt;		column1 = node.elements["column1"].text&lt;br /&gt;		column2 = node.elements["column2"].text&lt;br /&gt;		coords = node.elements["Point"].elements["coordinates"].text.split(",")&lt;br /&gt;		f &lt;&lt; [id, column1, column2, coords[1], coords[0] ].join(",") &lt;&lt; "\n"&lt;br /&gt;		id += 1&lt;br /&gt;	}&lt;br /&gt;ensure&lt;br /&gt;	f.close&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 25 Mar 2006 18:56:47 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1765</guid>
      <author>ajturner (Andrew Turner)</author>
    </item>
  </channel>
</rss>
