XML Dateien suchen und verändern
Posted on: 20. Juni 2018
Heute suchen wir in einem Ordner nach XML Dateien. Danach lesen wir den Inhalt der Dateien aus und verändern einzelne Attribute der XML-Elemente und speichern die Dateien später wieder ab.
Danke für den Vorschlag eines Zuschauers für das Tutorial.
Hier der Code aus dem Youtube-Video. Die Vorgehensweise und Bemerkungen findest du direkt als Kommentare (#Grün) im Code. So wird er dir ebenfalls in der PowerSHELL ISE angezeigt werden.
——————————————–
# Ausgangspfad der Datei-Suche $quellpfad = "C:\Test\GenerierteDokumente" # Alle Dateien mit der Endung *.xml Rekursiv in ein Array schreiben $allexml = Get-ChildItem $quellpfad "*.xml" -Recurse # Array für Standorte Anlegen $standorte = @() # Alle Standorte aller XML-Elemente in das Array $Standorte schreiben foreach ($xmlobjekt in $allexml) { # Holen des Inhalts der XML Datei [xml]$xml = Get-Content $xmlobjekt.FullName # Abrufen der Standortinformationen aus den Server-Elementen und an Array anhängen $standorte += (Select-Xml -Xml $xml -XPath '//Server').Node.Informationen.Standort } # Ausgabe des Arrays Gruppiert nach den Werten $standorte.GetEnumerator() | Group-Object # Inhalte der XML-Elemente mit XPath suchen und ersetzen foreach ($xmlobjekt in $allexml) { # Inhalt der XML-Date in $xml laden [xml]$xml = Get-Content $xmlobjekt.FullName # Für jedes Element in der XML Datei unter 'Server' durchlaufen foreach ($server in (Select-Xml -Xml $xml -XPath '//Server')) { # Falls der Standort Lugano ist if ($server.Node.Informationen.Standort -like "Lugano") { # Standort neu setzen auf Paris $server.Node.Informationen.Standort = "Paris" } # Speichern der XML Datei am ursprünglichen Ort $xml.Save($xmlobjekt.FullName) } } # Direkt Dateien nach Text durchsuchen und ersetzen foreach ($datei in $allexml) { # Kompletten Inhalt der Datei in Variabel laden $text = Get-Content $datei.FullName # Variabel neu schreiben und Freiburg durch Hamburg ersetzen $text = $text.Replace("Freiburg","Hamburg") # Schreiben des Inhaltes von $Text in die ursprüngliche Datei Set-Content $datei.FullName $text }
——————————————–
Solltest du irgendwelche Fragen haben, dann kannst du diese gerne entweder hier im Blog oder direkt unter dem YouTube Video stellen. Ich gebe alles, deine Fragen zeitnahe zu beantworten oder ein entsprechendes Video darüber zu machen.
Gerade die Grundlagen-Videos werde ich nicht mit viel Text ausschmücken. Bei mir ist jeweils jede Code-Zeile direkt im Code Kommentiert (#Grün). Du kannst den Code direkt mit in dein Script kopieren und hast so eine gute Orientierungshilfe, sobald du die Scripts auf deine Bedürfnisse anpasst.
Ich erstelle und veröffentliche sämtliche Videos kostenlos und blende auch keine Werbung ein, dies will ich auch so beibehalten. Da das vermittelte Wissen aber in teuren Kursen erlangt werden kann, ist eine kleine Spende hin und wieder sicher keine schlechte Gegenleistung.