XML CDATA abfangen - geht das auch professioneller?
Hallo erfahrenere Powershell Skripter,
ich lese mit Powershell eine XML Datei aus, die im Feld Description ab und an CDATA enthält.
z.B.
Ich habe auch schon herausgefunden, dass ich dann das Feld mit:
auslesen muss, um den Inhalt zu bekommen.
Lese ich ganz normal mit
aus, bekomme ich als Inhalt 'System.Xml.XmlElement' zurück.
Aktuell sieht meine Vorgehensweise so aus:
Allerdings frage ich mich, ob das nicht zu händsärmlig ist und ich demnächst wieder nacharbeiten darf.
Deshalb die Frage an alle die es schon besser wissen, wie macht man so etwas professioneller?
Nachtrag: Pareto reicht mir
Grüße vom it-frosch
ich lese mit Powershell eine XML Datei aus, die im Feld Description ab und an CDATA enthält.
z.B.
<DESCRIPTION><![CDATA[good kind GmbH & Co. KG]]></DESCRIPTION>
Ich habe auch schon herausgefunden, dass ich dann das Feld mit:
$($element.DESCRIPTION.InnerText)
Lese ich ganz normal mit
$($element.DESCRIPTION)
Aktuell sieht meine Vorgehensweise so aus:
# InnerText verwenden wenn Description CDATA enthält
if ($element.DESCRIPTION -match 'XML') {
$variable.NAME = "$($element.DESCRIPTION.InnerText)"
}
else {
$variable.NAME = "$($element.DESCRIPTION)"
}
Allerdings frage ich mich, ob das nicht zu händsärmlig ist und ich demnächst wieder nacharbeiten darf.
Deshalb die Frage an alle die es schon besser wissen, wie macht man so etwas professioneller?
Nachtrag: Pareto reicht mir
Grüße vom it-frosch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4265658061
Url: https://administrator.de/contentid/4265658061
Ausgedruckt am: 08.11.2024 um 07:11 Uhr
3 Kommentare
Neuester Kommentar
Immer als XMLElement holen, z.B. dann hast du immer die Property InnerText (Achtung der XPath-Filter ist Case-Sensitive!)
Gruß
[xml]$xml = @'
<?xml version="1.0" encoding="utf-8"?>
<root>
<DESCRIPTION><![CDATA[good kind GmbH & Co. KG]]></DESCRIPTION>
<DESCRIPTION2>Whatever</DESCRIPTION2>
</root>
'@
$xml.SelectSingleNode('/root/DESCRIPTION').InnerText
$xml.SelectSingleNode('/root/DESCRIPTION2').InnerText
Gruß
Nicht "professionell" genug 😂?
wenn du nur ein Feld aus der XML brauchst geht es kurz auch so
Achtung: Falls die XML Dateien Namespaces enthalten bitte beachten das diese bei Select-XML oder über einen Namespacemanager angegeben werden müssen damit der XPATH ein Knotenergebnis liefert.
wenn du nur ein Feld aus der XML brauchst geht es kurz auch so
(Select-XML -Path <xmlfile> -XPath "/root/DESCRIPTION").Node.innerText
Achtung: Falls die XML Dateien Namespaces enthalten bitte beachten das diese bei Select-XML oder über einen Namespacemanager angegeben werden müssen damit der XPATH ein Knotenergebnis liefert.