ZippiScrippi 0 Geschrieben vor 2 Stunden Melden Geschrieben vor 2 Stunden Hi Leute, ich verzweifle gerade an einem xml File. Es soll mittels Powershell mit einem neuen Eintrag erweitert werden. Die Struktur sieht folgendermaßen aus: <userSettings> <Test.Properties.Settings> <setting name="FileParameter" serializeAs="String"> <value>Test</value> </setting> <setting name="AppsToStart" serializeAs="Xml"> <value> <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <string>C:\Test.exe</string> </ArrayOfString> </value> </setting> </Test.Properties.Settings> </userSettings> Die Erweiterung sieht vor, dass eine weitere App unter "setting name=AppsToStart" eingetragen werden soll. Um das "einzuleiten" wird die xml eingelesen, folgend ein neues Element mit Create.Element erstellt - ok so far. Aber wie bekomme ich das nun genau auf die Position? Soll dann so aussehen: <setting name="AppsToStart" serializeAs="Xml"> <value> <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <string>C:\Test.exe</string> <string>C:\Test_II.exe</string> </ArrayOfString> </value> </setting> Es bedarf ja eigentlich nur wenige Zeilen code... $xmlData=[xml](Get-Content -Path $xmlPath -Encoding UTF8) $NewEntry="C:\Test_II.exe" $NewElement=$xmlData.CreateElement("string") $NewElement.InnerText=$NewEntry $targetElement=$xmlData.SelectSingleNode("//userSettings//Test.Properties.Settings//setting[@name='AppsToStart']") $targetElement.AppendChild($NewElement) | Out-Null Ist wohl dicht dran, passt aber noch nicht, weil der Eintrag hinter dem /ArrayOfString und sogar hinter /value eingetragen wird... Was muss ich anders machen, damit der Eintrag an der richtigen Stelle auftaucht? Vorab vielen Dank für Eure Hilfe. Grüße, ZippiScrippi Zitieren
mwiederkehr 395 Geschrieben vor 1 Stunde Melden Geschrieben vor 1 Stunde XPath wird nicht rückwärts geschrieben. Mit $targetElement=$xmlData.SelectSingleNode("//setting[@name='AppsToStart']//ArrayOfString") sollte es stimmen. Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.