Powershell und XML
Hallo,
ich habe mal wieder ein kleines Problem...
Ich bin grade dabei ein paar .XML-Dateien für unser System umzustricken.
Mit Dateinamen und Inhalt funktioniert das auch schon ganz gut und wie ich will.
Jetzt möchte ich aber eine "processing instruction", genauer gesagt den Tag <?XML-sylesheet ...>, entfernen.
Behandle ich die Datei wie eine .txt und lösche die Zeile einfach so raus, wird der Rest nicht mehr als .XML erkannt und IE zeigt mir eine leere Seite. (Mache ich das manuell bekomme ich die Anzeige, wie ich sie will - Struktur der XML).
Wie kann ich das bewerkstelligen, dass es passt?
ich habe mal wieder ein kleines Problem...
Ich bin grade dabei ein paar .XML-Dateien für unser System umzustricken.
Mit Dateinamen und Inhalt funktioniert das auch schon ganz gut und wie ich will.
Jetzt möchte ich aber eine "processing instruction", genauer gesagt den Tag <?XML-sylesheet ...>, entfernen.
Behandle ich die Datei wie eine .txt und lösche die Zeile einfach so raus, wird der Rest nicht mehr als .XML erkannt und IE zeigt mir eine leere Seite. (Mache ich das manuell bekomme ich die Anzeige, wie ich sie will - Struktur der XML).
Wie kann ich das bewerkstelligen, dass es passt?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 306781
Url: https://administrator.de/contentid/306781
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Cougar77,
hier ein Beispiel
Beispiel XML-Datei:
Code zum entfernen der entsprechenden Processing-Instruction (stylesheet)
ACHTUNG: Wenn deine XMLs Namespaces verwenden muss der Code gänzlich umgestrickt werden und die Namespaces per Namespacemanager bekannt gemacht werden!
Grüße Uwe
hier ein Beispiel
Beispiel XML-Datei:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="default.css" title="Default style"?>
<images>
<image>
<startdate>20160517</startdate>
<fullstartdate>201605170000</fullstartdate>
<enddate>20160518</enddate>
</image>
</images>
$xmlfile = 'C:\demo.xml'
# XML Datei laden
$xml = new-object XML ; $xml.Load($xmlfile)
# Knoten der Processing Instruction per XPath selektieren
$pi = $xml.SelectSingleNode("/processing-instruction('xml-stylesheet')")
# Instruction entfernen wenn sie gefunden wurde
if ($pi){$xml.RemoveChild($pi)}
# XMl-File wieder speichern
$xml.Save($xmlfile)
ACHTUNG: Wenn deine XMLs Namespaces verwenden muss der Code gänzlich umgestrickt werden und die Namespaces per Namespacemanager bekannt gemacht werden!
Behandle ich die Datei wie eine .txt und lösche die Zeile einfach so raus, wird der Rest nicht mehr als .XML erkannt und IE zeigt mir eine leere Seite.
Ich vermute du hast das File dann nicht im selben Encoding gespeichert wie es in der XML in der Declaration angegeben wurde, oder unwissend mehr entfernt als erlaubt.Grüße Uwe