_XMLGetValue XMLDomWrapper

  • Sers,
    ich geh hier mal wieder am Stock...

    XML
    <?xml version="1.0"?>
    <root>
       <Settings>
          <Start>
          	Text
          </Start>
        </Settings>
    </root>


    Das ist meine xml mit dem tollen namen test.xml

    [autoit]


    $xFile = @ScriptDir&"\Data\test.xml"
    $XMLopen = _XMLFileOpen($xFile)
    ConsoleWrite("Debug: $iRET = " & $XMLopen & @LF & @error & @LF & @Extended)
    $story = _XMLGetValue("/root/Settings/Start")
    ConsoleWrite("Debug-Value: "& $story& @LF & @error & @LF & @Extended)

    [/autoit]


    Alles Laut Error code von XMLDomWrapper findet er den node nicht... ich habe es auch schon vor root das / weggelassen und auch ganz ohne den root node nur mit Settings/Start... aber nix will...
    Ich sehe den grund des Fehlers nicht.

    hat jemand eine Idee?

    Einmal editiert, zuletzt von crdy (14. März 2013 um 10:09) aus folgendem Grund: unvollständig

  • Siehe Funktionsbeschreibung von _XMLGetValue:

    [autoit]


    ;===============================================================================
    ; Function Name: _XMLGetValue
    ; Description: Get XML values based on XPath input from root node.
    ; Parameter(s): $strXPath - xml tree path from root node (root/child/child..)
    ; Syntax: _XMLGetValue($strXPath)
    ; Author(s): Stephen Podhajecki <[email='gehossafats@netmdc.com'][/email]>
    ; Return Value(s): On Success An array of fields text values(count is in first element)
    ; On Failure -1 set
    ; @Error = 1
    ; @Extended to:
    ; 0 = No matching node
    ; 1 = No object passed
    ;===============================================================================

    [/autoit]

    Dann jetzt Return Value(s) anschauen... Was sehen wir?
    Rüschtig!

    Zitat


    An array of fields text values(count is in first element)

    _XMLGetValue gibt ein Array zurück.^^

    chess

  • ok das hab ich wirklich überlesen... asche auf mein Haupt...
    ich komm mir durch meine unfähigkeit grad vor wie ein Kindergartenkind...
    dennoch.

    ich habe mal das Array überdimensionie Dim $story[10]

    hab dann wie oben mit $story =_XMLGetValue("/root/Settings/Start")
    zugewiesen und mit isArray überprüft ob es ein array ist.

    zack kein array...

    ich mach hier glaub ich grundlegend was Falsch...

    ich hatte es jetzt so verstanden, das _xmlGetValue sich ähnlich verhält wie _FileReadToArray sehe ich das falsch?

    Sorry wenn ich mich hier total blöd anstelle...

  • Hm. Ich hab mal probiert, was aus dem Example rauszukriegen:

    [autoit]


    Dim $aAttName[1], $aAttVal[1]
    $ret = _XMLGetAllAttrib("/WORKBENCH_PROJECT/Projects/Project/Tasks/Task",$aAttName,$aAttVal,"[0]")
    _ArrayDisplay($aAttName,"Task[0]"); show the names
    _ArrayDisplay($aAttVal,"Task[0]"); show the values

    [/autoit]

    Probier's mal so:

    [autoit]


    #include <Array.au3>

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

    Local $aNames[1], $aValues[1]
    $xFile = @ScriptDir&"\Data\test.xml"
    $XMLopen = _XMLFileOpen($xFile)
    ConsoleWrite("Debug: $iRET = " & $XMLopen & @LF & @error & @LF & @Extended)
    $story = _XMLGetAllAttrib("/root/Settings/Start", $aNames, $aValues, "[0]")
    ConsoleWrite("Debug-Value: "& $story& @LF & @error & @LF & @Extended)
    _ArrayDisplay($aNames)
    _ArrayDisplay($aValues)

    [/autoit]

    lg

  • Soooo...

    erstmal danke chess und sorry für meine absolute Dummheit...

    für alle die hier lesen weil sie ähnliche Probleme habe...

    schaut mal nach ob ihr umlaute im Text habt.
    wenn ihr umlaute habt, macht entweder daraus ö = oe ODER
    öffnet die xml im Notepad geht auf speichern unter/save as und speichert den Kram als UTF-8 ab...

    und dann muss im xml file noch so aus sehen
    <?xml version="1.0" encoding="utf-8"?>

    wenn es dann nicht funktioniert habt ihr ein anderes Problem als ich.