XML Wert mithilfe von Powershell unter MsgId auf das Wort HALLO ändern
Ich nehme nur Paar Zeilen aus dem Code - es sollte ja reichen.
Der Wert zwischen <MsgId> muss dann geändert werden auf irgendwas, als Beispiel auf das Wort: HALLO
Wenn ich aber dies hier im PS ausführe:
Sagt er mir: die Eigenschaft "InnerText" wurde für dieses Objekt nicht gefunden.
Wer kann hier helfen?
Der Wert zwischen <MsgId> muss dann geändert werden auf irgendwas, als Beispiel auf das Wort: HALLO
<GrpHdr>
<MsgId>GF-BWKES24093HBK025632</MsgId>
<CreDtTm>2023-06-24T17:57:47
Wenn ich aber dies hier im PS ausführe:
$filePath = "C:\test.xml"
$xml = [xml](Get-Content $filePath)
$xml.SelectSingleNode("//MsgId").InnerText = "HALLO"
$xml.Save($filePath)
Sagt er mir: die Eigenschaft "InnerText" wurde für dieses Objekt nicht gefunden.
Wer kann hier helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42717204942
Url: https://administrator.de/contentid/42717204942
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
12 Kommentare
Neuester Kommentar
Auch kein Hallo.
Wenn oberhalb Namespaces vorkommen müssen diese bei Verwendung einer XPath Abfrage zwingend berücksichtigt werden sonst lieferr die Abfrage kein Ergebnis und somit keinen Knoten zurück!
XML in PowerShell: XPath-Abfragen und Namespaces
Oder du verwendest statt SelectSingleNode den ganzen Pfad dahin mittels bspw.
https://tio.run/##bY9dT8IwFIbv@yuahgSWsHWCGiXbQBIFg4OLkUhivCjbccN07dIWh7 ...
Auch kein Gruß
Ich nehme nur Paar Zeilen aus dem Code - es sollte ja reichen.
Nein, der Kontext ist in dem Fall wichtig wenn man per XML-Objekt arbeitet!Wenn oberhalb Namespaces vorkommen müssen diese bei Verwendung einer XPath Abfrage zwingend berücksichtigt werden sonst lieferr die Abfrage kein Ergebnis und somit keinen Knoten zurück!
XML in PowerShell: XPath-Abfragen und Namespaces
Oder du verwendest statt SelectSingleNode den ganzen Pfad dahin mittels bspw.
$xml.RootKnoten.Subknoten.GrpHdr.MsgId = "Hallo"
https://tio.run/##bY9dT8IwFIbv@yuahgSWsHWCGiXbQBIFg4OLkUhivCjbccN07dIWh7 ...
Auch kein Gruß
RTFM Link oben ...
https://tio.run/##bY9dT8IwFIbv@yuahgSWsHWCGiXbQBIFg4OLkUhivCjbccN07dIWh7 ...
$filePath = "C:\test.xml"
$xml = [xml](Get-Content $filePath)
$ns = New-Object System.Xml.XmlNamespaceManager($xml.NameTable)
$ns.AddNamespace("ns","urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08")
$node = $xml.SelectSingleNode("//ns:MsgId",$ns)
If ($node){
$node.innerText = "Hallo"
$xml.Save($filePath)
}else{
Write-warning "Knoten nicht existent."
}
https://tio.run/##bY9dT8IwFIbv@yuahgSWsHWCGiXbQBIFg4OLkUhivCjbccN07dIWh7 ...
Kein Wunder du hast meinen Code ja total verunstaltet deiner ist voller Syntaxfehler fehlender Kommas etc pp.!!
Und der Namespace muss 100% passen, also prüfe ob da nicht ein Leerzeichen zu viel oder zu wenig da ist!
Das es funktioniert siehst du ja an der Demo unter tio.run
Also Brille aufsetzen und richtig machen dann klappt das auch.
Und der Namespace muss 100% passen, also prüfe ob da nicht ein Leerzeichen zu viel oder zu wenig da ist!
Das es funktioniert siehst du ja an der Demo unter tio.run
Also Brille aufsetzen und richtig machen dann klappt das auch.
Dann stimmt dein Namespace nicht zu 100% und du hast ihn uns hier wegen fehlender Codetags falsch gepostet und so wieder übernommen. Vermute die ganzen Leerzeichen im Namespace sind fehlerhaft, wie dein Code der ebenso hier falsch angekommen ist ... Übernehme ihn doch mal so
Den Original XML Text hast ja nur du ... Und wir sind darauf angewiesen was du hier postest🫤.
$ns.AddNamespace("ns","urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08")