XML Erstellung _XMLCreateChildNode

  • Hallo zusammen,

    hat sich jemand schon mit dem _XMLDomWrapper.au3 auseinandergesetzt?

    Ich verstehe die Funktion _XMLCreateChildNode nicht.


    Ich will in einer For Schleife die Bestellnummern in ein XML Child schreiben lassen.


    Die Ubound For Schleife gibt mir aber erst den kompletten Arrayblock und dann zeilenweise weniger werdend die Nummern wieder.


    Liegt das an der Array FOr Schleife, oder an der _XMLCreateChildNode Funktion?

    Spoiler anzeigen


    AutoIt
    For $iR = 0 To UBound($aExtract, $UBOUND_ROWS) - 1
    		$sItem = $aExtract[$iR]
    		_XMLCreateRootChild("Order", "")
    		_XMLCreateChildNode("//Orders/Order", "OrderNr", $sItem & "(Bestellnr. des Shops)", "")
    Next
    Spoiler anzeigen


    Das kommt dabei raus:

    Spoiler anzeigen


    SO soll es aussehen:

    Spoiler anzeigen

    Liegt das an der FOR-Ubound Schleife?

    Danke für eure Hilfe.

    VG

    horphi

  • Naja. Das Problem ist, dass du Order erstellst und dann in order die Nummern einfügst... in alle Order, die bis dahin existieren. Weiß jetzt nicht, wie mans lösen kann mit dem Wrapper ,da ich den nie benutzt habe.
    Er kann die einzelnen Order - Childnodes nicht unterscheiden und fügt es deshalb in alle ein.
    Könntest einfach so die Items erstellen (mit Stringbefehlen und Fileopen/filewrite/fileclose). Vermutlich deutlich einfacher.

  • Könntest einfach so die Items erstellen (mit Stringbefehlen und Fileopen/filewrite/fileclose). Vermutlich deutlich einfacher.

    Hallo Kanashius,

    danke für deine Antwort.

    Nun ja, es kommen noch ein paar Zeilen XML hinzu und es ist ganz charmant, wenn die Zelle keine Wert hat, wird die XML Zeile gleich abgeschlossen.

    Du hast Recht, die Childnodes werden nicht unterschieden und das Objekt wird in der ganzen Datei gesucht und ergänzt, egal wie oft ich das wiederhole.

    Habe jetzt das Item in die Order eingefügt (somit ist es eindeutig) und am ende werden alle Order durch einen Leersting ersetzt. Sollte als Workaround auch gehen...

    VG
    horphi und frohe Weihnachten... :) :thumbup:

    • Offizieller Beitrag

    Kannst du mal ein lauffähiges Script mit Beispieldaten posten?
    Und hänge mal den Wrapper mit an, habe keine Lust den jetzt zu suchen, da ich sonst mit dem Object selber arbeite.

  • Probier mal so..
    Hab´s über eine nachgelagerte Schleife gelöst, in der ich vorher die Order mit dem $sItem eindeutig mache und danach wieder durch Order ersetze...


    VG

    horphi

    • Offizieller Beitrag

    Soll die XML mit deinem Beispiel so aussehen?


    Probier mal das aus :

    Spoiler anzeigen

    Btw, das mit der Nummerierung steht nirgends in der UDF, man muß schon google quälen.

    • Offizieller Beitrag

    Ich habe nach der UDF gesucht und im EN-Forum irgendein Beispielscript gefunden.
    Da ging es zwar um das Lesen eines Nodes, aber dazu muss man diese auch eindeutig ansprechen wenn es mehrer gleichnamige
    Nodes gibt. Auf XMLGetNodeCount bin ich gekommen, weil ich mir einfach mal die UDF Funktionen angesehen habe.
    Geht aber auch ohne, wenn man den Schleifenzähler $iR einfach um 1 erhöht, da dieser Zähler 0 Basiert ist.