Problem mit XML

  • Hallo,

    ich versuche mit dem XML DOM Wrapper Werte aus einer XML-Datei zu lesen.

    Die XML sieht so aus:

    Spoiler anzeigen

    Ich hab nun schon mit mehreren Funktionen versucht die Werte zwischen <v> und </v> auszulesen.
    Ich weiß, dass das mit StringBetween auch geht. Nur ich muss noch mehr machen mit dem Wrapper, deshalb nutze ich den.
    Hat jemand schon eine deutsche Hilfe eventuell?

    Einmal editiert, zuletzt von m-obi (6. Juni 2012 um 07:26)

  • Hi,
    Ich bin kein Fan der UDF, ich verwende das Objekt lieber direkt:

    [autoit]

    $oXML = ObjCreate("MSXML2.DomDocument")

    [/autoit][autoit][/autoit][autoit]

    $oXML.loadXML(ClipGet())
    $oXML.setProperty("SelectionLanguage", "XPath")

    [/autoit][autoit][/autoit][autoit]

    $oNodes = $oXML.selectNodes("//item_list/i/v")
    For $oNode In $oNodes
    ConsoleWrite("Content: " & $oNode.text & @LF)
    Next

    [/autoit]


    Englische Doku: http://msdn.microsoft.com/en-us/library/…v=vs.85%29.aspx

  • Ahh der Path war falsch.
    Ich habs jetzt, danke.

    [autoit]

    $sXmlFile = @ScriptDir & "\ilctest.xml"
    _XMLFileOpen($sXmlFile)
    $aValues = _XMLGetValue("//item_list/i/v")
    _ArrayDisplay($aValues)

    [/autoit]


    Warum findest du den Wrapper nicht gut?

  • Warum findest du den Wrapper nicht gut?


    Der Wrapper fügt eine weitere Schicht ein, die mir den Zugriff erschwert. Das Objekt besitzt schon eine für mich einfach nutzbare Schnittstelle, die muss nicht durch einen Wrapper geschleust werden.
    Ich nutze manchmal eine eigene _XMLOpen-Funktion, die die das erstellen des Objekts vereinfacht und eine weitere, aber mehr brauche ich nicht.

    [autoit]

    Func _XMLGetText($oElement, $default = '')
    If Not IsObj($oElement) Then Return SetError(1, 0, $default)
    Return $oElement.text
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    $value = _XMLGetText($oXML.selectSingleNode("//item_list/i/v"))

    [/autoit]
  • Ah ok.

    Hab jetzt auch gemerkt das ich den Wrapper doch nicht brauch. ^^
    Den XML-String den ich via TCP bekomme, muss ich ja garnicht abspeichern zum auswerten. Dann nimm ich einfach die String-Funktionen.