XML Datei Auslesen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von pc-freack.

    XML Datei Auslesen

    Guten Abend,

    ich wollte mal fragen, wie ich einen Wert aus der XML Datei auslesen kann.
    Die Datei sieht so aus:

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8" standalone="no" ?>
    2. <Desc descVersion="1">
    3. <author>pc-freack</author>
    4. <title>Test</title>
    5. </Desc>


    MfG pc-freack

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „pc-freack“ ()

    ich habe nun folgenenden Code:

    VB.NET-Quellcode

    1. Try
    2. Dim doc As New XmlDocument()
    3. doc.LoadXml(My.Computer.FileSystem.SpecialDirectories.Desktop & "\test.xml")
    4. Dim author As String = doc.DocumentElement.SelectSingleNode("/Desc/author").InnerText
    5. TextBox1.Text = author
    6. Catch ex As Exception
    7. MsgBox(ex.Message)
    8. End Try


    Doch es kommt diese Fehlermeldung: Ungültige Daten auf Stammebene. Zeile 1, Position1.

    MfG pc-freack
    Versuch es mal so.

    VB.NET-Quellcode

    1. Try
    2. Dim doc As New XmlDocument()
    3. doc.LoadXml(My.Computer.FileSystem.SpecialDirectories.Desktop & "\test.xml")
    4. Dim author As String = doc.DocumentElement.SelectSingleNode("author").InnerText
    5. TextBox1.Text = author
    6. Catch ex As Exception
    7. MsgBox(ex.Message)
    8. End Try
    Habe in meinem aktuellen Projekt auch eine dynamische XML-Datenbank genutzt und durfte mich auch erstmal einarbeiten...

    Weil meine Datenbank bis zu 4 Ebenen besitzt, durfte ich das ganze via For-Schleifen und Childnodes lösen - Habe Tage dran gesessen :)

    MfG,
    X-Zat / Momo
    Dürfte selbsterklärend sein(ist zum lesen und schreiben xmlwriter = schreiben :D und xmlreader = lesen :D):

    VB.NET-Quellcode

    1. Module Module1
    2. Private Sub XMLWriter()
    3. ' Auswahl einer Kodierungsart für die Zeichenablage
    4. Dim enc As New System.Text.UnicodeEncoding
    5. ' XmlTextWriter-Objekt für unsere Ausgabedatei erzeugen:
    6. Dim XMLobj As Xml.XmlTextWriter _
    7. = New Xml.XmlTextWriter("quickie.xml", enc)
    8. With XMLobj
    9. ' Formatierung: 4er-Einzüge verwenden
    10. .Formatting = Xml.Formatting.Indented
    11. .Indentation = 4
    12. ' Dann fangen wir mal an:
    13. .WriteStartDocument()
    14. ' Beginn eines Elements "Personen". Darin werden wir mehrere
    15. ' Elemente "Person" unterbringen.
    16. .WriteStartElement("Personen")
    17. ' Hier kommt das erste Element "Person". Eine Person hat
    18. ' in unserem einfachen Beispiel einen Titel, einen Nach-
    19. ' namen und einen Vornamen. Als Demo soll uns das genügen.
    20. .WriteStartElement("Person") ' <Person
    21. .WriteAttributeString("Titel", "Dr.")
    22. .WriteAttributeString("Name", "Meyer")
    23. .WriteAttributeString("Vorname", "Hans")
    24. .WriteEndElement() ' Person />
    25. ' Hier kommt (noch immer im Element "Personen" das zweite
    26. ' Element "Person".
    27. .WriteStartElement("Person") ' <Person
    28. .WriteAttributeString("Titel", "")
    29. .WriteAttributeString("Name", "Schmidt")
    30. .WriteAttributeString("Vorname", "Carlos")
    31. .WriteEndElement() ' Person />
    32. ' Nachdem das Element "Personen" zwei Elemente "Person"
    33. ' erhalten hat, beenden wir die Ausgabe für "Personen"...
    34. .WriteEndElement() ' </Personen>
    35. ' ... und schließen das XML-Dokument (und die Datei)
    36. .Close() ' Document
    37. End With
    38. ' Und so sieht die Ergebnisdatei aus:
    39. ' -----------------------------------
    40. '<?xml version="1.0" encoding="utf-16"?>
    41. '<Personen>
    42. ' <Person Titel="Dr." Name="Meyer" Vorname="Hans" />
    43. ' <Person Titel="" Name="Schmidt" Vorname="Carlos" />
    44. '</Personen>
    45. End Sub
    46. Private Sub XMLReader()
    47. ' Wir benötigen einen XmlReader für das Auslesen der XML-Datei
    48. Dim XMLReader As Xml.XmlReader _
    49. = New Xml.XmlTextReader("quickie.xml")
    50. ' Es folgt das Auslesen der XML-Datei
    51. With XMLReader
    52. Do While .Read ' Es sind noch Daten vorhanden
    53. ' Welche Art von Daten liegt an?
    54. Select Case .NodeType
    55. ' Ein Element
    56. Case Xml.XmlNodeType.Element
    57. Console.WriteLine("Es folgt ein Element vom Typ " & .Name)
    58. ' Alle Attribute (Name-Wert-Paare) abarbeiten
    59. If .AttributeCount > 0 Then
    60. ' Es sind noch weitere Attribute vorhanden
    61. While .MoveToNextAttribute ' nächstes
    62. Console.WriteLine("Feldname: " & .Name & _
    63. " -> " & _
    64. "Feldwert: " & .Value)
    65. End While
    66. End If
    67. ' Ein Text
    68. Case Xml.XmlNodeType.Text
    69. Console.WriteLine("Es folgt ein Text: " & .Value)
    70. ' Ein Kommentar
    71. Case Xml.XmlNodeType.Comment
    72. Console.WriteLine("Es folgt ein Kommentar: " & .Value)
    73. End Select
    74. Loop ' Weiter nach Daten schauen
    75. .Close() ' XMLTextReader schließen
    76. End With
    77. ' Und so sieht das Ergebnis der Ausgabe aus:
    78. ' ------------------------------------------
    79. 'Es folgt ein Element vom Typ Personen
    80. 'Es folgt ein Element vom Typ Person
    81. 'Feldname: Titel -> Feldwert: Dr.
    82. 'Feldname: Name -> Feldwert: Meyer
    83. 'Feldname: Vorname -> Feldwert: Hans
    84. 'Es folgt ein Element vom Typ Person
    85. 'Feldname: Titel -> Feldwert:
    86. 'Feldname: Name -> Feldwert: Schmidt
    87. 'Feldname: Vorname -> Feldwert: Carlos
    88. End Sub
    89. Sub Main()
    90. XMLReader()
    91. End Sub
    92. End Module
    super, es funktioniert.
    Ich habe fast genau den gleichen Code oder sogar den gleichen Code in einer anderen Anwendung aber ich dachte, der funktioniert dafür so nicht, aber es funktioniert.
    Riesen Dank.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „pc-freack“ ()