Einfache XML auswerten, einzelne Nodes

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von samson.

    Einfache XML auswerten, einzelne Nodes

    Moin Zusammen!
    Ich bräuchte mal wieder das geballte Schwarmwissen von Euch, da ich mal wieder vor einem Problem stehe
    mit dem ich echt zu kämpfen habe.

    Ich habe eine Einfach XML, nix großartiges und aus dieser brauche ich 3-4 Werte ausgelesen und in TextBoxen ausgegeben.

    XML-Datei-Inhalt
    Spoiler anzeigen

    XML-Quellcode

    1. <root>
    2. <user>admin</user>
    3. <passwort>strenggeheim</passwort>
    4. <ip>192.168.2.1</ip>
    5. <pvs>TE5T</pvs>
    6. <mandant>2020001</mandant>
    7. <workplace>Buero</workplace>
    8. <gusbox />
    9. <tls>none</tls>
    10. <bsnr>1122334455</bsnr>
    11. <contractid>515222883334</contractid>
    12. <pvsuser />
    13. <pvsuserpwd />
    14. </root>


    Mein bisheriger Code, den ich aus der MSDN geladen habe...

    VB.NET-Quellcode

    1. Private Function XMLReader() As String
    2. If File.Exists(Path.Combine(localpath, "konnektor.xml")) Then
    3. Dim XML_Reader As Xml.XmlReader _
    4. = New Xml.XmlTextReader(Path.Combine(localpath, "konnektor.xml"))
    5. With XML_Reader
    6. Do While .Read
    7. Select Case .NodeType
    8. Case Xml.XmlNodeType.Element
    9. Console.WriteLine("Element-Typ " & .Name)
    10. If .AttributeCount > 0 Then
    11. While .MoveToNextAttribute
    12. Console.WriteLine("Feldname: " & .Name &
    13. " -> " &
    14. "Feldwert: " & .Value)
    15. End While
    16. End If
    17. Case Xml.XmlNodeType.Text
    18. Console.WriteLine("Text-Inhalt: " & .Value)
    19. End Select
    20. Loop
    21. .Close()
    22. End With
    23. End If
    24. End Function


    Auslesen möchte ich nur die IP Adresse, das Passwort und die ContractID.
    Wie kann ich das am leichtesten bewerkstelligen? Ich habe leider bisher keine Erfahrungen im XML Bereich.
    Benötige es eigentlich auch nur für diesen kleine Codeblock.

    Vielen Dank!
    Stefan
    Nein! Doch! OHH!
    Mit XDocument kannst du, wenn die Datei wirklich so aussieht, sehr einfach an die Daten kommenn:

    VB.NET-Quellcode

    1. Private Sub SurroundingSub()
    2. Dim ip As String = String.Empty
    3. Dim password As String = String.Empty
    4. Dim contractID As String = String.Empty
    5. Dim doc As XDocument = XDocument.Load("Root.xml")
    6. ip = doc.Root.Element("ip").Value
    7. password = doc.Root.Element("pvsuserpwd").Value
    8. contractID = doc.Root.Element("contractid").Value
    9. Console.WriteLine($"IP-Addresse: {ip}")
    10. Console.WriteLine($"Passwort: {password}")
    11. Console.WriteLine($"ContactID: {contractID}")
    12. End Sub


    Je nach Szenraio ist es vielleicht auch praktischer, eine Klasse zu bauen, die die XML Felder als Properties aufweist, und dann die Datei durch den XmlSerializer zu jagen.