Soy un novato LINQ to XML y un novato KML también; así que tengan paciencia conmigo.Linq a XML para KML?
Mi objetivo es extraer marcas de posición individuales de un archivo KML. Mi KML comienza así:
<?xml version="1.0" encoding="utf-8"?>
<Document xmlns="http://earth.google.com/kml/2.0">
<name>Concessions</name>
<visibility>1</visibility>
<Folder>
<visibility>1</visibility>
<Placemark>
<name>IN920211</name>
<Style>
<PolyStyle>
<color>80000000</color>
</PolyStyle>
</Style>
<Polygon>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>11.728374,1.976421,0 11.732967,1.965322,0 11.737225,1.953161,0 11.635858,1.940812,0 11.658102,1.976874,0 11.728374,1.976421,0 </coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
<Placemark>
...
Esto es por lo que yo he conseguido:
Dim Kml As XDocument = XDocument.Load(Server.MapPath("../kmlimport/ga.kml"))
Dim Placemarks = From Placemark In Kml.Descendants("Placemark") _
Select Name = Placemark.Element("Name").Value
Hasta el momento no hay buenos - Kml.Descendants ("marcas de posición") me da una enumeración vacía. El documento se carga correctamente, porque KML.Descendants contiene todos los nodos. Por lo que vale la pena estas consultas con las manos vacías, así:
Dim foo = Kml.Descendants("Document")
Dim foo = Kml.Descendants("Folder")
Puede alguien me punto en la dirección correcta? Puntos de bonificación por enlaces a buenos tutoriales de Linq a XML: los que he encontrado en línea se detienen en escenarios muy simples.
Esto me da excepción en tiempo de ejecución arrojado: System.Xml.XmlException - La ':' carácter, valor hexadecimal 0x3A, no pueden ser incluidos en un nombre. –
Siéntase libre de responder en C#. –
Gracias - esto funciona. He encontrado un enfoque más conciso que publicaré a continuación. –