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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 42717204942
Url: https://administrator.de/contentid/42717204942
Printed on: May 5, 2024 at 18:05 o'clock
12 Comments
Latest comment
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")