XML Datei über cmd auslesen - nur letzter Wert wird wiedergegeben
Guten Tag,
ich möchte eine XML-Datei über cmd auslesen. Habe mich durch Google gekämpft, aber leider noch keine finale Lösung gefunden.
Momentan arbeite ich mit folgendem Befehl, der auch soweit funktioniert:
for /f "tokens=3 delims=<>" %i in ('findstr "<tns:customerTransactionId>" a.xml') do echo %i>ergebnis.txt
Jedoch wird durch die Schleife nur der zuletzt gefundene Wert im Feld <tns:customerTransactionId> in die Textdatei ausgegeben.
Wie kann ich den Befehl abändern, damit er alle gefundene Werte da reinschreibt? Finden tut er sie ja schon, das sieht man ja beim Durchlauf des Befehls.
Ist dies in dieser Form überhaupt möglich oder muss der Befehl in seiner Struktur komplett verändert werden?
Bin für jede Hilfe dankbar.
Beste Grüße
ich möchte eine XML-Datei über cmd auslesen. Habe mich durch Google gekämpft, aber leider noch keine finale Lösung gefunden.
Momentan arbeite ich mit folgendem Befehl, der auch soweit funktioniert:
for /f "tokens=3 delims=<>" %i in ('findstr "<tns:customerTransactionId>" a.xml') do echo %i>ergebnis.txt
Jedoch wird durch die Schleife nur der zuletzt gefundene Wert im Feld <tns:customerTransactionId> in die Textdatei ausgegeben.
Wie kann ich den Befehl abändern, damit er alle gefundene Werte da reinschreibt? Finden tut er sie ja schon, das sieht man ja beim Durchlauf des Befehls.
Ist dies in dieser Form überhaupt möglich oder muss der Befehl in seiner Struktur komplett verändert werden?
Bin für jede Hilfe dankbar.
Beste Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 393686
Url: https://administrator.de/contentid/393686
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
7 Kommentare
Neuester Kommentar
ich möchte eine XML-Datei über cmd auslesen
Böser Anfängerfehler. XML Dateien nur mit einem Parser konform nutzen.Findest du hier genug Beispiele dazu VBS/Powershell/etc.
Gruß A,
Poste die XML dann können wir dir konkret weiterhelfen. Bitte Codetags verwenden!!
Ist zwar an einigen stellen nicht valide deine XML (und du hast ihn !trotz Bitte! !ohne! Codetags gepostet ), aber wat solls ....
Bitte:
Mach et jot, tschö.
Bitte:
@echo off
set "filein=D:\test.xml"
set "fileout=D:\test.txt"
powershell -Executionpolicy Bypass -NoProfile -Command "([xml](gc '%filein%')).customerResponse.reportfileresponse.responseDetails.customerTransactionId" >"%fileout%"
Hallo moello,
auch wenn du jetzt schon eine sehr gute Lösung bekommen hast: Der Grund, dass du bei deinem ursprünglichen Code nur den letzten Wert in der Datei hattest, war das einfache ">". Damit erstellst du bei jeder Ausgabe eine neue Datei, eine bestehende (die in diesem Fall den vorherigen Wert enthält) wird überschrieben. Mit ">>" würdest du alle Werte bekommen, weil dann die Ausgabe an die bestehende Datei angehängt wird. Nur wenn es keine Datei gibt, wird sie neu erstellt.
Gruß vom
WinCobold
auch wenn du jetzt schon eine sehr gute Lösung bekommen hast: Der Grund, dass du bei deinem ursprünglichen Code nur den letzten Wert in der Datei hattest, war das einfache ">". Damit erstellst du bei jeder Ausgabe eine neue Datei, eine bestehende (die in diesem Fall den vorherigen Wert enthält) wird überschrieben. Mit ">>" würdest du alle Werte bekommen, weil dann die Ausgabe an die bestehende Datei angehängt wird. Nur wenn es keine Datei gibt, wird sie neu erstellt.
Gruß vom
WinCobold