XML per xDocument auslesen und Teile parsen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    XML per xDocument auslesen und Teile parsen

    Guten Morgen,

    Ich hätte da gerne mal ein Problem :D

    Ich habe eine XML Datei, genauer eine KML Datei (Landkartendaten), aus dieser will ich bestimmte Blöcke suchen und aus diesen Blöcken einzene Daten als String weiterverarbeiten.
    Hierzu habe ich mir in des MSDN bereits die xDocument-Seiten durchgelesen, leider stehe ich da aber wie ein Ochse vor dem Berg.

    (Ich erwähne jetzt mal lieber nicht, dass ich deswegen schon versucht hatte die Datei Zeile für Zeile zu zerlegen und weiter zu verarbeiten, was gehörig schief ging :D )

    Hier mal ein Auszug aus der XML:

    XML-Quellcode

    1. ...
    2. <Placemark>
    3. <name>Felix</name>
    4. <description>Felix wohnt hier</description>
    5. <styleUrl>#icon-22</styleUrl>
    6. <ExtendedData>
    7. </ExtendedData>
    8. <Point>
    9. <coordinates>5.030242,50.866872,0.0</coordinates>
    10. </Point>
    11. </Placemark>
    12. <Placemark>
    13. <name>Heinz</name>
    14. <description>Heinz wohnt hier</description>
    15. <styleUrl>#icon-22</styleUrl>
    16. <ExtendedData>
    17. </ExtendedData>
    18. <Point>
    19. <coordinates>5.030233,50.866777,0.0</coordinates>
    20. </Point>
    21. </Placemark>
    22. ...


    Was ich jetzt vor habe, ist ein String, der den Namen enthält und ein String der die Koordinate enthält zu verarbeiten, indem ich hieraus einen neuen String bastel, der dann in eine Textdatei rein soll.

    Beispiel der Textdatei:

    ...
    (Felix,5.030242,50.866872)
    (Heinz,5.030233,50.866777)
    ...

    Soweit zu meinem Problem, nun wüsste ich gerne, wie ich da hin komme.
    Ein Link zu einem verständlichen Tutorial, wo es um genau sowas geht, wäre mir übrigens lieber als fertiger Code ;)

    Ich sollte vielleicht noch anmerken, ich nutze VB 2015.

    Vielen Dank !
    Ähm ... Danke. Gelesen hab ichs, nur verstanden hab ich jetzt davon (glaube ich) nichts ;(

    Habe es anhand dessen nun so versucht, einfach nur um zu schauen ob ich zu irgendeinem Ergebnis komme:

    VB.NET-Quellcode

    1. Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
    2. datei = OpenFileDialog1.FileName
    3. End Sub
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. OpenFileDialog1.ShowDialog()
    6. LoadData()
    7. End Sub
    8. Private Function LoadData() As IEnumerable(Of String)
    9. On Error Resume Next
    10. Dim xdoc = XDocument.Load(datei)
    11. Dim x As String
    12. Dim ns = xdoc.Root.Name.Namespace.NamespaceName 'NamespaceName ermitteln statt xmlns-Import
    13. x = From xel In xdoc.Elements(XName.Get("Folder", ns)).Elements(XName.Get("Placemark", ns)).Descendants(XName.Get("Name", ns)) Select xel.Value
    14. ListBox1.Items.Add(x)
    15. End Function


    Ergebnis: Ein haufen leerzeilen in der Listbox. Ansonsten leider nichts.

    Momentan schwebe ich über der MSDN im Bereich des XmlReader ... und verstehe noch immer nur Bahnhof.
    Die XML Dateien in allen Beispielen nutzen Sachen wie <books titel="xyz" author="test"></books> aber die die ich habe hat die Daten nicht so, sondern ausschließlich in dem Format: <book><name>test</name><author>xyz</author></book>

    Mag jemand mich nochmal in eine richtige Richtung treten bitte ? :D
    ja - ich!

    Nimm das Tut ernst, und versuche ernsthaft damit. MSDN-XmlReader ist grauenhaftes Low-Level-Zeugs - Xml strukturiert abfragen geht wie im Tut gezeigt.
    Es ist doch ein Video dabei - kannst du nicht einfach Schritt für schritt nachmachen, was das Video vor macht?
    Dann kannst du ja noch fragen, wenn s sich bei dir anders verhält als wie im Video vorgeturnt.