Wert in XML-Datei per VB-Script ändern

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von DTF.

    Wert in XML-Datei per VB-Script ändern

    Hallo

    Im folgenden XML-File möchte ich die Einstellung für "MainFormLocation" per VB-Script ändern. Leider bekomme ich es nicht korrekt hin.

    Mein XML

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <configuration>
    3. <userSettings>
    4. <AgroTwin.eInventar.Properties.Settings>
    5. <setting name="MainFormSize" serializeAs="String">
    6. <value>1300, 800</value>
    7. </setting>
    8. <setting name="MainFormLocation" serializeAs="String">
    9. <value>622, 211</value>
    10. </setting>
    11. <setting name="mniAnsichtStatusleisteCheckState" serializeAs="String">
    12. <value>Checked</value>
    13. </setting>
    14. <setting name="sbrMainVisible" serializeAs="String">
    15. <value>True</value>
    16. </setting>
    17. <setting name="tbrMainVisible" serializeAs="String">
    18. <value>True</value>
    19. </setting>
    20. <setting name="mniAnsichtNavigationsbereichCheckState" serializeAs="String">
    21. <value>Checked</value>
    22. </setting>
    23. <setting name="sptMainContainerPanel1Collapsed" serializeAs="String">
    24. <value>False</value>
    25. </setting>
    26. <setting name="sptMainContainerSplitterDistance" serializeAs="String">
    27. <value>340</value>
    28. </setting>
    29. <setting name="mniAnsichtSymbolleisteCheckState" serializeAs="String">
    30. <value>Checked</value>
    31. </setting>
    32. <setting name="CallUpgrade" serializeAs="String">
    33. <value>False</value>
    34. </setting>
    35. <setting name="KontenAnsicht" serializeAs="String">
    36. <value>1</value>
    37. </setting>
    38. </AgroTwin.eInventar.Properties.Settings>
    39. </userSettings>
    40. </configuration>


    Mein Code

    Visual Basic-Quellcode

    1. Sub test1()
    2. Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    3. xmlDoc.Async = "False"
    4. xmlDoc.Load ("mein Pfad")
    5. Dim strXPath, Node, strNAME, objNode
    6. strXPath = "//configuration/userSettings/AgroTwin.eInventar.Properties.Settings/setting[@name='MainFormLocation']"
    7. Set Node = xmlDoc.SelectSingleNode(strXPath)
    8. Set colNode = xmlDoc.SelectNodes(strXPath)
    9. For Each Node In colNode
    10. Node.Text = "0, 0"
    11. Next
    12. xmlDoc.Save "mein pfad"
    13. End Sub


    Das XML müsste nach dem Vorgang so aussehen:

    <setting name="MainFormLocation" serializeAs="String">
    <value>0, 0</value>
    </setting>

    Das Ergebnis meines Codes ist aber:

    <setting name="MainFormLocation" serializeAs="String">0, 0</setting>

    Wenn mir jeman helfen kann, bin ich sehr dankbar. Leider habe ich kaum Erfahrungen beim Zugriff auf XML-Files.
    Leider klappt dies nicht. Ich habe das auch schon getestet.

    Spannend ist, dass ich ich mit "msgbox Node.Text" den korrekten Inhalt angezeigt bekomme. Wenn ich jedoch mit "Node.text = blabla" den Inhalt anpassen möchte, erhalte ich das oben beschriebene falsche Resultat.

    Vielen Dank für die Hilfe!
    An welcher Stelle. Innerhalb der For Each-Schleife kommt bei der MsgBox 0, 0 raus.
    Bilder
    • VBS.png

      24,06 kB, 1.057×336, 56 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    PeWe schrieb:

    Ich habe das auch schon getestet.

    Ich auch – und es geht!

    strXPath = "//configuration/userSettings/AgroTwin.eInventar.Properties.Settings/setting[@name='MainFormLocation']/value" ergibt:

    XML-Quellcode

    1. <setting name="MainFormLocation" serializeAs="String">
    2. <value>0, 0</value>
    3. </setting>
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    VBS kenn ich nicht, aber 2 mal den gleichen Namen für eine Variable könnte auch ein Problem sein. Aber welche VAriable da nun in diesen Scope verwendet wird, könnte man sich mal anschauen, bzw. mal die erste rausnehmen, denn die wird ja nicht verwendet im Schnipsel

    Quellcode

    1. Set Node = xmlDoc.SelectSingleNode(strXPath)
    2. ...
    3. For Each Node In colNode
    4. ....

    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D