sombetzki
Goto Top

XML Felder neu beschreiben

Hallo,

Ich möchte per Batch-Durchlauf die Felder
firstName="Max" lastName="Mustermann"
in
firstName="Max Mustermann" lastName=""
in mehreren xml Dateien umschreiben.
xml ist leider so gar nicht meins.

anbei der Anfang der xml bis zu den Feldern, glaube der Rest wird nicht benötigt.

<?xml version="1.0" encoding="UTF-8"?>  

-<order order-reference-id="T23174481708" partof="1" partid="1" nettotal="15.913277577953" total="18.936800317764" tax="3.023522739811" currency="EUR" id="51378320" opId="40121305" partnerName="Firma" version="1.4" schemaLocation="http://test http://test" xmlns:xsi="http://test" xmlns:ext="de.test" xmlns="http://test">  

<processor version="unversioned" webType="WEB2" productType="WEB" time="12:09:03" product="test" locale="de_DE" delivery-time="12:09:03" delivery-period="120" delivery-date-meridian="PM" delivery-date="2023-08-24" delivery-12-time="12:09:03" date="2023-08-17" client-type="EXTERNAL_CART_ORDER" client-name="externalCart" action="action" location="location" softwareManufacturer="test GmbH"/>  


-<price tax="3.023522739811" gross="18.936800317764" net="15.913277577953">  

<taxpart tax="3.023522739811" taxcode="4" taxpercent="19"/>  

</price>


-<user language="de" id="9014218770" loyaltyId="9014218770" email="noreply@test.de" acceptNewsletter="false" acceptPromotion="false">  

<address fax="" area="" city="Bad Neuenahr-Ahrweiler" cityPart="" company="" countryCode="DE" firstName="Max" lastName="Mustermann" province="" salutation="" street="Himmelsburger Straße 88" zip="53474"/>  

Danke im Voraus,

Sombetzki

Content-ID: 83205220242

Url: https://administrator.de/contentid/83205220242

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

SeaStorm
SeaStorm 09.09.2023 um 18:04:09 Uhr
Goto Top
Hi

Batch ist denkbar ungeeignet dafür. Aber was hast du denn schon gemacht?
Sombetzki
Sombetzki 09.09.2023 um 18:13:39 Uhr
Goto Top
Leider bisher noch nichts.
Gerne auch als powershell Script
7907292512
Lösung 7907292512 09.09.2023, aktualisiert am 10.09.2023 um 09:11:07 Uhr
Goto Top
Moin.
foreach ($file in Get-Childitem "d:\data" -File -Filter *.xml){  
     $xml = New-Object XML
     $xml.Load($file.Fullname)
     $xml.order.user.address.firstName += " " + $xml.order.user.address.lastName  
     $xml.order.user.address.lastName = ""  
     $xml.Save($file.FullName)
     # in anderen Ordner verschieben
     $file | move-item -Destination "x:\destination"  
}
tio.run

Gruß sid
Sombetzki
Sombetzki 10.09.2023 um 09:05:22 Uhr
Goto Top
Hallo sid,

könnte man die xml anschließend noch in einen anderen Ordner verschieben.

Gruss
Gso
7907292512
7907292512 10.09.2023 aktualisiert um 09:22:24 Uhr
Goto Top
Zitat von @Sombetzki:
könnte man die xml anschließend noch in einen anderen Ordner verschieben.

Oben hinzugefügt.

P.s. Doku lesen hilft auch ab und zu Move-Item

Dann bitte Haken dran und ab dafür .
wobit94
wobit94 10.09.2023 aktualisiert um 10:19:46 Uhr
Goto Top
Hallo Sombetzki,

Ich zeige dir hier ein PowerShell-Skript, das genau das tut, was du willst.


# PowerShell-Skript zum Ändern von XML-Feldern
# Listet alle XML-Dateien im Verzeichnis auf
$files = Get-ChildItem -Path "C:\Pfad\zu\deinem\Verzeichnis" -Filter *.xml  

# Durchläuft alle XML-Dateien im Verzeichnis
foreach ($file in $files) {
    # Lädt die XML-Datei
    [xml]$xmlContent = Get-Content $file.FullName

    # Sucht den <user> Knoten und dessen <address> Unterknoten
    $addressNode = $xmlContent.order.user.address

    # Ändert die firstName und lastName Felder
    $addressNode.firstName = $addressNode.firstName + " " + $addressNode.lastName  
    $addressNode.lastName = ""  

    # Speichert die Änderungen in der XML-Datei
    $xmlContent.Save($file.FullName)
}

Wichtig: Ersetze "C:\Pfad\zu\deinem\Verzeichnis" mit dem tatsächlichen Pfad zu dem Verzeichnis, in dem sich die XML-Dateien befinden.

Kopiere das Skript und füge es in deine PowerShell-Konsole ein. Es wird alle XML-Dateien im angegebenen Verzeichnis durchlaufen und die Felder firstName und lastName entsprechend ändern.

Bitte denke daran, vorher eine Sicherungskopie der XML-Dateien zu machen, falls etwas schiefgeht.

Viel Erfolg und liebe Grüsse! 😄
Sombetzki
Sombetzki 10.09.2023 um 10:24:45 Uhr
Goto Top
Super vielen Dank für eure Hilfe🤩
Werd ich gleich erst mal testen.

VG
GSO
7907292512
7907292512 10.09.2023 aktualisiert um 11:15:11 Uhr
Goto Top
Zitat von @wobit94:

Hallo Sombetzki,

Ich zeige dir hier ein PowerShell-Skript, das genau das tut, was du willst.


# PowerShell-Skript zum Ändern von XML-Feldern
# Listet alle XML-Dateien im Verzeichnis auf
$files = Get-ChildItem -Path "C:\Pfad\zu\deinem\Verzeichnis" -Filter *.xml  

# Durchläuft alle XML-Dateien im Verzeichnis
foreach ($file in $files) {
    # Lädt die XML-Datei
    [xml]$xmlContent = Get-Content $file.FullName

    # Sucht den <user> Knoten und dessen <address> Unterknoten
    $addressNode = $xmlContent.order.user.address

    # Ändert die firstName und lastName Felder
    $addressNode.firstName = $addressNode.firstName + " " + $addressNode.lastName  
    $addressNode.lastName = ""  

    # Speichert die Änderungen in der XML-Datei
    $xmlContent.Save($file.FullName)
}

Wichtig: Ersetze "C:\Pfad\zu\deinem\Verzeichnis" mit dem tatsächlichen Pfad zu dem Verzeichnis, in dem sich die XML-Dateien befinden.

Kopiere das Skript und füge es in deine PowerShell-Konsole ein. Es wird alle XML-Dateien im angegebenen Verzeichnis durchlaufen und die Felder firstName und lastName entsprechend ändern.

Bitte denke daran, vorher eine Sicherungskopie der XML-Dateien zu machen, falls etwas schiefgeht.

Viel Erfolg und liebe Grüsse! 😄

Hat aber leider mehrere Fehler, kommt davon wenn man nur blind aus ChatGPT kopiert ...

Erstens Zeile 3 Fehlt der -File Parameter, gibt es also in der Quelle einen Ordner wie bspw. ORDNER.XML wird dieser als XML Datei behandelt und das schlägt dann natürlich fehl, dann in Zeile 8 mit der XML Umwandlungs-Methode wird das XML Declaration Encoding ignoriert und somit potentiell das falsche Encoding bei der Umwandlung verwendet, dagegen beachtet dies die Load-Methode des XML-Objects.
DivideByZero
DivideByZero 10.09.2023 um 18:52:10 Uhr
Goto Top
@7907292512: da hast Du natürlich recht. Schaut man sich allerdings die Beiträge des Users @wobit94 aus der jüngeren Zeit an, dann sind nicht nur die Quelltexte blind aus ChatGPT kopiert, sondern die gesamten Beiträge sehen doch sehr verdächtig nach 100% KI aus. Geschwätzig, meist am Kern der Sache vorbei und langatmig.

@Sombetzki: ich würde das nicht als Grundlage nehmen, sondern das, was @7907292512 so beiträgt, da steckt know-how dahinter.
Schönen Sonntag,

DivideByZero
Sombetzki
Sombetzki 12.09.2023 um 15:33:49 Uhr
Goto Top
Vielen Dank euch allen, läuft alles super.
VG
GSO