Auslesen einer "online" .XML

  • VB.NET

Es gibt 45 Antworten in diesem Thema. Der letzte Beitrag () ist von Angarius.

    Mein programm hat auch eine XML ausgelsen auf einem Server.
    Und so lese ich sie aus:
    **Xml importieren**

    VB.NET-Quellcode

    1. Dim Doc As New XmlDocument
    2. Doc.Load("http://blablabla.com/daniel/datasource.xml")
    3. Dim sRed As String = Doc.SelectSingleNode("data/sred").InnerText

    Und so funkt. es bei mir einwandfrei.

    EDIT:// Sollte nicht SelectSingleNodeS sein sondern SelectSingleNode ohne S ;D

    VB.NET-Quellcode

    1. Using wC As New WebClient
    2. Dim xml As String = wC.DownloadString("deine Adresse")
    3. Dim xmlDoc As New XmlDocument()
    4. xmlDoc.Load(xml)
    5. End Using

    Zugriff auf die Knoten:

    VB.NET-Quellcode

    1. xmlDoc("name")(index)("name")(whatever)

    Also bei dem:

    XML-Quellcode

    1. <item1>
    2. <test>Asdf</test>
    3. <hilfe>
    4. <item>Hilfe</item>
    5. </hilfe>
    6. </item1>

    Wäre der Zugriff auf item1.hilfe.item so:

    VB.NET-Quellcode

    1. Dim item As String = xmlDoc("item1")("hilfe")("item").InnerXml

    Viel Spaß!
    Jetzt hab ich ein weiteres Problemchen.
    Was ist, wenn die XML folgend aussieht?

    XML-Quellcode

    1. <LUMENCORE>
    2. <TEAMNEWS>
    3. <DATUM>18.05.2012</DATUM>
    4. <NEWS>Lorem ipsum dolor sit amet,</NEWS>
    5. </TEAMNEWS>
    6. <REALMINFOS>
    7. <REALM>
    8. <NAME>Name1</NAME>
    9. <UPTIME>1 day(s) 2 hour(s) 40 second(s)</UPTIME>
    10. <ONLINE>1480</ONLINE>
    11. <HORDS>1200</HORDS>
    12. <ALLIANCE>280</ALLIANCE>
    13. </REALM>
    14. <REALM>
    15. <NAME>Name2</NAME>
    16. <UPTIME>1 day(s) 0 hour(s) 12 second(s)</UPTIME>
    17. <ONLINE>1200</ONLINE>
    18. <HORDS>1000</HORDS>
    19. <ALLIANCE>200</ALLIANCE>
    20. </REALM>
    21. </REALMINFOS>
    22. <ACCOUNTS>800</ACCOUNTS>
    23. </LUMENCORE>


    Wie kann ich jetzt jeweils den <NAME> in eine Extra Textbox schreiben?
    Nachdem ja <NAME> 2x vorkommt.

    Vielen Dank im Voraus.
    Dann nimm einfach den Index.
    Also bei dem für Realm 1 eben 0

    VB.NET-Quellcode

    1. Dim uptime As String = xmlDoc("LUMENCORE")("REALMINFOS")(0)("UPTIME").InnerXml

    Is zwa Hardcodet, aber es funktioniert. Würd ich mich mehr mit XML beschäftigen, könnt ich dir sicherlich auch ne bessere Möglichkeit geben,das zu tun.
    So ganz funktioniert es nicht bei mir:

    Mein Code:

    VB.NET-Quellcode

    1. Imports System.Xml
    2. Dim Doc As New XmlDocument
    3. Doc.Load("http://meineseite.de/teamnews.xml")
    4. Dim uptime1 As String = xmlDoc("LUMENCORE")("REALMINFOS")(0)("UPTIME").InnerXml
    5. lbl_uptimewotlk.Text = uptime1


    Das sagt er mir: das xml bei xmlDoc ist falsch. Woran kann das liegen?
    Das hab ich eben schon gemacht. Funktioniert leider immer noch nicht...

    VB.NET-Quellcode

    1. Dim xmlDoc As New XmlDocument 'XMLDocument erstellen
    2. xmlDoc.Load("http://meineseite.de/teamnews.xml")
    3. Dim uptime1 As String = xmlDoc("LUMENCORE")("REALMINFOS")(0)("UPTIME").InnerXml
    4. lbl_uptime1.Text = uptime1
    Mit dem Step by Step konnte ich nichts finden :(

    Wenn ich aber den Code so abändere:

    VB.NET-Quellcode

    1. Dim uptime1 As String = xmlDoc("LUMENCORE")("REALMINFOS")("REALM")("UPTIME").InnerXml


    Dann geht es. VB schafft es wohl nicht mit (0) umzugehen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Angarius“ ()

    Okay. Ich habe jetzt exakt den gleichen Aufbau wie du ihn hat. Nur mit einem RSS-Feed.
    Und du musst es so machen:

    VB.NET-Quellcode

    1. xmlDoc("rss")("channel").ChildNodes(4)("description").InnerXml

    Also bei ChildNodes den Index 4. Da kannste dann auch durch-ForEach'n.

    VB.NET-Quellcode

    1. Dim Uptimes As New List(Of String)
    2. For Each item As ChildNode In xmlDoc("LUMENCORE")("REALMINFOS").ChildNodes
    3. Uptimes.Add(item("UPTIME"))
    4. Next


    In der Zeile

    VB.NET-Quellcode

    1. For Each item As ChildNode In xmlDoc("LUMENCORE")("REALMINFOS").ChildNodes


    Hat er ein Problem mit Childnode nach As.

    Auf meiner Form müsste ich doch Theoretisch eine Listbox erstellen und der den Namen uptimes geben?
    Okay. Muss nicht ChildNode heißen, sondern XmlNode.
    Naja..ListBoxen verhalten sich noch ein bisschen anders.
    Da kannst nicht mit .Add arbeiten, sondern mit .Items.Add. Aber ja, du könntest das machen. Hierbei lohnt sich aber, das XmlDocument global zu erstellen und dann darauf nurnoch zuzugreifen.
    Denn sonst musste immer runterladen was lange dauert und zu nicht-Reaktion des Programms führen kann.

    VB.NET-Quellcode

    1. Dim Uptimes As New List(Of String)
    2. For Each item As XmlNode In xmlDoc("LUMENCORE")("REALMINFOS").ChildNodes
    3. Uptimes.Add(item("UPTIME"))
    4. Next


    Bei Uptimes.Add hat er nen Fehler.
    Wohin bekomm ich denn die Ausgabe angezeigt?
    Welches Element der Toolbox muss den hierfür auf die Form?
    ah damn. Noch nie mit List(Of T) gearbeitet? (Namespace System.Collections.Generic)
    Klar dasses nicht geht: item("UPTIME").InnerText
    Damit gehts dann sicher.
    Kannst natürlich auch deine ListBox nutzen. Spricht nix dagegen.