gelöst XML Datei auslesen und schreiben mit Powershell

Mitglied: Roachman

Roachman (Level 1) - Jetzt verbinden

19.11.2020, aktualisiert 12:39 Uhr, 219 Aufrufe, 4 Kommentare

Hallo zusammen,

ich muss mehrere XML Dateien bearbeiten . Normalerweise benutze ich, um einzelne Elemente in Dateien zu ändern und auszulesen, die cmd.exe. Bei Text Dateien funktioniert das auch immer sehr gut. Nun kommt es aber beim Zerlegen von XML Dateien immer wieder zu Problemen wie Sonderzeichen oder das Limit von Token. Deshalb möchte ich das zum Anlass nehmen, um mich in die Powershell einzuarbeiten. Leider habe ich da keine Erfahrung und hoffe, dass ich hier etwas Hilfe bekomme.
Die XML Dateien sehen etwa so aus.
Innerhalb einer solchen Struktur benötige ich nur eine Zeile (<part part_one=“Wert). Hier benötige ich den Wert von „part_two“ und „part_sixty-five“ diese beiden Werte sollen durch einen Punkt getrennt, nach „part_two“ geschrieben werden und der Rest soll so erhalten bleiben. Bei der cmd.exe hätte ich zeilenweise die Datei ausgelesen, mit IF Else auf die Zeile gewartet, diese dann zerlegt und wieder zusammengesetzt. Nun die Frage, wie setze ich das aber nun mit der Powershell um? Die beiden benötigten Werte habe ich mir wie folgt mal „zusammengeschustert“.
Leider weiß ich nun nicht weiter bzw. ob das so überhaupt der richtige Ansatz ist?!?
Die Werte stehen vor P_ARTICLE_MANUFACTURER="xxx" und P_ARTICLE_PARTNR="xxx"
Vielen Dank
Mitglied: Printe
LÖSUNG 19.11.2020, aktualisiert um 13:51 Uhr
Kein Thema ... aber lass den "Shiet" mit dem Split Powerhell kann XML nativ parsen, in Objekte zerlegen und mittels XPath passende Knoten selektieren!
btw. dein hier gepostetes XML ist übrigens nicht valide, es hat mehrere Root(DocumentElement)-Knoten und das kann eine XML nicht, eine XML kann nur ein einziges "DocumentElement" besitzen! Außerdem hat deine XML diverse Rechtschreibfehler sogar in den Knoten die du selektieren willst, deswegen muss ich hier den tatsächlichen Namen mal wieder raten.

Deswegen gehe ich einfach mal von folgender XML-Datei aus (die ist wenigstens valide )

Falls es dich interessiert wie man mittels XPath bestimmte Knoten selektiert die den gewünschten Kriterien entsprechen (so wie es die Funktion "SelectNodes" hier tut) dann beliest du dich hier
https://www.w3schools.com/xml/xpath_syntax.asp
Im Beispiel Xpath werden nur die "part" Elemente selektiert die auch deine beiden genannten Attribute besitzen
//partsmanagement/part[@part_two and @part_sixty-five]
Nur diese werden geändert und am Ende die XML wieder gespeichert.

ACHTUNG HINWEIS!: Anpassungen könnten nötig werden wenn du uns hier Teile mit XML "Namespaces" in deiner XML verschwiegen hast.

Gruß P.
Bitte warten ..
Mitglied: Roachman
19.11.2020 um 15:17 Uhr
Hallo Printe,

danke für deine Antwort.
Zitat von Printe:

Kein Thema ... aber lass den "Shiet" mit dem Split Powerhell kann XML nativ parsen, in Objekte zerlegen und mittels XPath passende Knoten selektieren!
Ok

Funktioniert ;) Thx

btw. dein hier gepostetes XML ist übrigens nicht valide, es hat mehrere Root(DocumentElement)-Knoten und das kann eine XML nicht, eine XML kann nur ein einziges "DocumentElement" besitzen!

Dann wird die als XML bezeichnete Datei nicht valide erzeugt.



Falls es dich interessiert wie man mittels XPath bestimmte Knoten selektiert die den gewünschten Kriterien entsprechen (so wie es die Funktion "SelectNodes" hier tut) dann beliest du dich hier
https://www.w3schools.com/xml/xpath_syntax.asp

Das werde ich mir ansehen.
Danke
VG Roachman
Bitte warten ..
Mitglied: Printe
19.11.2020, aktualisiert um 15:49 Uhr
Zitat von Roachman:
Dann wird die als XML bezeichnete Datei nicht valide erzeugt.
Kannst es ja einfach mal selbst probieren und folgenden invaliden Code mit zwei DocumentElements ausführen:
Bringt dir folgende Error-Message

Wenn das wirklich so wäre könntest du aber meinen obigen Code überhaupt erst gar nicht laufen lassen weil sich der Parser vorher schon beschweren würde. Denke das war nur ein Copy n Paste Fehler von deiner Seite.

Na denn.

Gruß P.
Bitte warten ..
Mitglied: Roachman
21.11.2020, aktualisiert 23.11.2020
Denke das war nur ein Copy n Paste Fehler von deiner Seite.

Das kann so passiert sein

Noch eine Frage, mir ist aufgefallen das die Umlaute nicht mehr korrekt nach dem Durchlauf dargestellt werden. Wie kann ich das noch ändern?

Danke

VG
Bitte warten ..
Heiß diskutierte Inhalte
Benchmarks
M.2 SSD und RAM zu langsam
gelöst MarkowitschFrageBenchmarks22 Kommentare

Hallo zusammen, ich habe mir folgenden PC zusammengestellt : MB: ASUS - ROG Strix Z490-E Gaming Mainboard (90MB12P0-M0EAY0) CPU: ...

Datenbanken
SQL Null Abfrage
gelöst newit1FrageDatenbanken18 Kommentare

Hallo zusammen, ich versuche eine CSV in meine Datenbank zu importieren. Das klappt auch. Die CSV hat folgendes Format: ...

Router & Routing
OPNSense statt Endian Firewall
hannes.hutmacherFrageRouter & Routing14 Kommentare

Hallo zusammen, wir setzen hinter der pfSense, die die direkt am Internet hängt, noch eine Endian Firewall ein. Dazwischen ...

Peripheriegeräte
Suchen Outdoor Wandler von LWL auf Cat 7 Kabel
gelöst pavelruFragePeripheriegeräte13 Kommentare

Hallo Zusammen, wir suchen einen Outdoor Konverter welcher von einem kommenden LWL Kabel auf CAT 7 Lan Kabel weiter ...

Windows 10
Amazon-Werbung im MS Edge Chromium
emeriksFrageWindows 1012 Kommentare

Hi, habe hier ein Win10 Pro. Seit ca. 2-3 Wochen habe ich gelegentlich den Effekt, dass beim Suchen im ...

Router & Routing
VPN mit zweiter Fritzbox hinter einer 7590
Eagle69FrageRouter & Routing11 Kommentare

Hallo zusammen, ich habe folgendes Problem. Auf der einen Seite steht ein Router von Bintec, dass Model BI.IP+ (vergleichbar ...

Ähnliche Inhalte
Batch & Shell
Powershell XML Datei aufsplitten
ITAllrounderFrageBatch & Shell2 Kommentare

Mahlzeit zusammen, ich stehe hier gerade vor einem kleinen PowerShell Dilemma und habe keinen Ansatz. Es geht darum, dass ...

XML
XML Datei mit Powershell splitten
gelöst LianenSchwingerFrageXML2 Kommentare

Hallo, ich habe eine riesige Exportdatei im XML-Format die ich nicht weiterverarbeiten kann. Der Aufbau ist wie folgt: Ich ...

Batch & Shell
Powershell XML Datei zu CSV Umwandeln
gelöst ShopShopFrageBatch & Shell5 Kommentare

Guten Tag zusammen, im Zuge der weiteren Automatisierung des Bestandsabgleichs mit unseren Lieferanten arbeite ich bereits mit Batchdatein, die ...

Batch & Shell

Powershell .xml Datei mit Zeitstempel öffnen

gelöst BaphometFrageBatch & Shell1 Kommentar

Hallo liebe Community, nach leider erfolgloser Google-Suche richte ich mich an Euch um evtl. eine Lösung für mein Thema ...

XML

XML-Datei mit Powershell editieren, 3. Teil

gelöst Jensxx1975FrageXML2 Kommentare

Hallo zusammen, ich brauche nochmal Hilfe. Geht um folgendes, das hier läuft: XML-Teil: das aber nicht: XML-Teil: Ich erkenne ...

XML

XML-Datei mit Powershell editieren, 2. Teil

gelöst Jensxx1975FrageXML13 Kommentare

Hallo zusammen, habe hier aus dem Form eine Script-Zeile erhalten um ein XML-File zu editieren. Läuft wunderbar. Nun möchte ...

Neue Fragen
Administrator Magazin
11 | 2020 Virtualisierung ist aus der IT nicht mehr wegzudenken. In der November-Ausgabe des IT-Administrator Magazins dreht sich der Schwerpunkt um das Thema "Server- und Storage-Virtualisierung". Darin erfahren Sie, wie sich die Virtualisierungstechnologie entwickelt hat, welche Varianten es im Bereich Server und Speicher gibt und wie ...
Neue Beiträge
Neue Jobangebote
Server- und Storage-VirtualisierungServer- und Storage-VirtualisierungBerechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid Cloud