xml auslesen---Probleme mit Umlauten

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von zulu23.

    xml auslesen---Probleme mit Umlauten

    Hallo zusammen, :)

    um Wetterinfos auszulesen habe ich folgende xml:

    google.de/ig/api?weather=Berlin

    Auslesen möchte ich diese dann wie folgt:

    VB.NET-Quellcode

    1. Dim xDoc As Xml.XmlDocument = New Xml.XmlDocument
    2. xDoc.Load("http://www.google.de/ig/api?weather=Berlin")
    3. TextBox1.Text = "PLZ: " & xDoc.SelectSingleNode("//postal_code").Attributes("data").Value


    Nun habe ich folgendes Problem:

    Das programm meldet immer, dass wegen der falschen codierung und ungültigen zeichen die xml nicht auszulesen sei.

    Ich hab im I-net gesucht und weiß nun , dass ich statt "UTF-8" die "ISO-8859-1" Codierung verwenden muss.

    aber wie mache ich, dass die xml im ISO-8859-1 format ausgelesen wird?

    Vielen Dank im Vorraus, :)

    rahu2000
    Hey,

    editiere erstmal

    XML-Quellcode

    1. <?xml version="1.0"?>

    in

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>

    ;)

    ~Edit: Geht ja garnicht :|

    Ich arbeite nun mit einem XmlNodeReader:

    VB.NET-Quellcode

    1. Dim xDoc As Xml.XmlDocument = New Xml.XmlDocument
    2. xDoc.Load("http://www.google.de/ig/api?weather=Berlin")
    3. Dim xmlReader As New XmlNodeReader(xDoc)
    4. While (xmlReader.Read())
    5. 'Hier wird jeder Knoten etc. einzeln ausgelesen:
    6. If xmlReader.Name = "postal_code" Then
    7. Textbox1.Text = "PLZ: " & xmlReader.Attributes("data").Value
    8. End If
    9. End While


    Zumindest sollte es so in der Art funktionieren ;)

    lg.

    PS: Wenn das nicht geht, lese die Datei einfach ein und such dir die Daten mit der RegEx raus :P

    VB.NET-Quellcode

    1. Dim xmlCode As String = My.Computer.FileSystem.ReadAllText("file")
    2. Dim rxPostalCode As New RegEx("\<postal_code data=\""(?<plz>([a-zA-Z0-9]))\""\>")
    3. Dim PostalCode As String = rxPostalCode.Match(xmlCode).Groups("plz").ToString()
    4. TextBox1.Text = "PLZ: " & PostalCode

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

    XML-Quellcode

    1. <?xml version="1.0" encoding="ISO-8859-1">

    sollte eigt. dann im Dokument stehen...evtl. ersetzt du das vor dem Laden, dass es so aussieht, oder du probierst mal das da:
    dotnet-snippets.de/dns/c-xml-e…ument-aendern-SID862.aspx

    Edit: zu langsam,aber soll ja kein utf-8 sein...xD
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    @ martinustreveri
    zum 2. vorschlag: bei mir kommt da der fehler:

    Fehler 1 "Attributes" ist kein Member von "System.Xml.XmlNodeReader". C:\Users\xxxx\Visual Studio 2008\Projects\Wetter Vorhersage\Form1.vb 41 43 Wetter Vorhersage



    und noch ne frage:
    wie soll ich eine datei die von googel kommt von


    <?xml version="1.0"?>

    in

    <?xml version="1.0" encoding="utf-8"?>

    editieren?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „rahu2000“ ()

    wurde mein Beitrag denn überhaupt gesehen? Ich habe einen Link und ebenso das mit dem ersetzen gepostet...
    P.S.: Du musst du Datei halt temporär ganz normal laden....
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    rahu2000 schrieb:

    Hallo zusammen,

    Ich habe leider auch ein kleines Problemchen mit dem xml auslesen,und zwar klappt es eigentlich scho recht gut mit dieser Methode:

    VB.NET-Quellcode

    1. Dim xDoc As Xml.XmlDocument = New Xml.XmlDocument
    2. xDoc.Load("http://www.google.de/ig/api?weather=Berlin")
    3. TextBox1.Text = "PLZ: " & xDoc.SelectSingleNode("//postal_code").Attributes("data").Value



    nur leider hat meine xml-Datei mehrere Knoten die gleich heissen, sprich in dem Beispiel postal_code...ich würde aber gerne
    von jedem dieser Knoten die gleich heissen ein Attribut auslesen das auch immer gleichen Namen hat....
    Mit SelectSingleNode kann man ja nur den ersten Knoten mit dem eingegebenen Namen auslesen, aber leider habe ich keinen "Befehl" gefunden mit dem ich mehrere Knoten mit dem selben Namen auslesen kann :(

    Gibs da vielleicht was wie ich das machen könnte?

    Gruss

    zulu23

    ryLIX schrieb:

    Öhm wie wäre es mit SelectNodes ?!?

    Und wie kann ich mit SelectNodes die einzelnen Attribute auslesen?
    "Attribute ist kein Member von SelectNodes"

    Ich habe als Knoten 3 mal "Timer" und in jedem ein "Date", und ich würde gerne alle "Date" auslesen...
    Als Beispiel:

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <Timers>
    3. <Timer Type="1" Enabled="0" Priority="50" ShutDown="3" Date="11.07.2009" Start="03:00:00" End="03:05:00" Days="TTTTTTT" Action="1">
    4. <Descr>EPG Aktuallisieren</Descr>
    5. <Options/>
    6. <Channel ID="536875841|Monitor"/>
    7. </Timer>
    8. <Timer Type="1" Enabled="0" Priority="50" ShutDown="3" Date="22.07.2009" Start="03:00:00" End="03:05:00" Days="TTTTTTT" Action="1">
    9. <Descr>EPG Aktuallisieren</Descr>
    10. <Options/>
    11. <Channel ID="536875841|Monitor"/>
    12. </Timer>
    13. <Timer Type="1" Enabled="0" Priority="50" ShutDown="3" Date="01.05.2009" Start="03:00:00" End="03:05:00" Days="TTTTTTT" Action="1">
    14. <Descr>EPG Aktuallisieren</Descr>
    15. <Options/>
    16. <Channel ID="536875841|Monitor"/>
    17. </Timer>
    18. </Timers>


    Gruss

    zulu23

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

    Also ich habs jetzt so hingekriegt:

    VB.NET-Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    2. 'xml Datei auslesen
    3. xDoc.Load("C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\test.xml")
    4. Dim xmlReader As New Xml.XmlNodeReader(xDoc)
    5. While (xmlReader.Read())
    6. 'Hier wird jeder Knoten etc. einzeln ausgelesen:
    7. If xmlReader.Name = "Timer" Then
    8. 'alle "Date" werden aufgelistet
    9. ListBox1.Items.Add(xmlReader.GetAttribute("Date"))
    10. ListBox1.Items.Add(xmlReader.GetAttribute("Start"))
    11. End If
    12. End While
    13. End Sub


    Jetzt kriege ich aber alle Einträge doppelt in die Listbox ?(

    Weiss vielleicht jemand von euch warum das so ist??

    zulu23
    Ich bins nochmal...vielleicht kann mir einer bei diesem Problem helfen?

    Wie kann ich im obigen xml Beispiel von mir dies auslesen:

    <Descr>Aktuallisieren</Descr>

    d.h. natürlich nur das was dazwischen steht :)
    Irgendwie ist das ein Knoten in einem Knoten aber ohne Attribute oder sehe ich das Falsch?

    Gruss

    zulu23