Frage

Ich versuche, die Polygone von Ortsmarken in einer KML-Datei zu extrahieren. So weit so gut:

Imports <xmlns:g='http://earth.google.com/kml/2.0'>
Imports System.Xml.Linq

Partial Class Test_ImportPolygons
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim Kml As XDocument = XDocument.Load(Server.MapPath("../kmlimport/ga.kml"))
        For Each Placemark As XElement In Kml.<g:Document>.<g:Folder>.<g:Placemark>
            Dim Name As String = Placemark.<g:name>.Value
            ...
        Next
    End Sub

End Class

Ich möchte den gesamten <polygon>...</polygon> Block als String erfassen. Ich habe versucht, so etwas wie diese (wo das ... ist oben):

        Dim Polygon as String = Placemark.<g:Polygon>.InnerText

aber das XElement-Objekt nicht über eine Eigenschaft Innertext oder ein gleichwertiges, soweit ich das beurteilen kann. Wie packe ich den rohen XML, die eine XElement definiert?

War es hilfreich?

Lösung

Was ich fehlte, war, dass Placemark.<g:Polygon> eine Sammlung von XElements ist kein einziger XElement. Dies funktioniert:

    For Each Placemark As XElement In Kml.<g:Document>.<g:Folder>.<g:Placemark>
        Dim Name As String = Placemark.<g:name>.Value
        Dim PolygonsXml As String = ""
        For Each Polygon As XElement In Placemark.<g:Polygon>
            PolygonsXml &= Polygon.ToString
        Next
    Next

XElement.ToString ist das Äquivalent von Innertext, wie tbrownell vorgeschlagen.

Andere Tipps

Haben Sie versucht:

Placemark.ToString()

Ich vermisste auch die Aufzählung. Wenn .Wert verwendet, ist es möglich, eine Null-Ausnahme zu erhalten. Versuchen Sie, die equivelent dieser Stelle:

(string)Placemark.<g:name>

Es tut uns Leid der VB-Syntax nicht sicher ,,, es ist schon eine Weile, da ich in VB codiert haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top