Einzeilige XML per batch umformatieren
Moin zusammen,
ich habe ein Problem bei dem ich nicht weiter komme.
Ich habe XML Dateien, die einzeilig sind und wenn ich sie mit notepad++ umformatiere 329 Zeilen hätten. Mit denen könnte ich was anfangen, weil ich weiß wie ich die per Batch verarbeiten kann, bei einzeiligen bekomme ich das aber so hin.
so sieht die Datei aus:
so hätte ich sie gerne
Da hier mehr als 600 xml Dateien zu verarbeiten sind, kann ich die nicht mit notepad umformatieren.
Letztendlich brauche ich nur die Information die in Zeile 76 (hier Zeile 4) stehen würde, nämlich BlaBlaBla bzw. den Ausdruck zwischen
<Name xml:lang="de">BlaBlaBla</Name>
und davon nur die ersten 10 Zeichen. BlaBlaBla ändert sich natürlich immer ...
Das ganze ist ein temporärer Workaround für ca. 2 Monate.
Wer kann mir weiter helfen?
Danke
Nagus
ich habe ein Problem bei dem ich nicht weiter komme.
Ich habe XML Dateien, die einzeilig sind und wenn ich sie mit notepad++ umformatiere 329 Zeilen hätten. Mit denen könnte ich was anfangen, weil ich weiß wie ich die per Batch verarbeiten kann, bei einzeiligen bekomme ich das aber so hin.
so sieht die Datei aus:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE cXML SYSTEM "http://www.scheissprojekt.de/"><cXML payloadID="SAPQ01.00000000000000000" timestamp=....
so hätte ich sie gerne
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://www.scheissprojekt.de/">
<cXML payloadID="SAPQ01.00000000000000000" timestamp="2018-01-01T00:00:00+01:00" version="1.2.042" signatureVersion="1.0">
<Header>
<From>
<Credential domain="NetworkID">
<Identity>XXXX</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkID">
<Identity>XXXX</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkID">
<Identity>XXXX-T</Identity>
<SharedSecret>
</SharedSecret>
</Credential>
<UserAgent>Supplier</UserAgent>
</Sender>
</Header>
...
Da hier mehr als 600 xml Dateien zu verarbeiten sind, kann ich die nicht mit notepad umformatieren.
Letztendlich brauche ich nur die Information die in Zeile 76 (hier Zeile 4) stehen würde, nämlich BlaBlaBla bzw. den Ausdruck zwischen
<Name xml:lang="de">BlaBlaBla</Name>
und davon nur die ersten 10 Zeichen. BlaBlaBla ändert sich natürlich immer ...
</InvoicePartner>
<InvoicePartner>
<Contact role="from">
<Name xml:lang="de">BlaBlaBla</Name>
Das ganze ist ein temporärer Workaround für ca. 2 Monate.
Wer kann mir weiter helfen?
Danke
Nagus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 482563
Url: https://administrator.de/contentid/482563
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo,
sorry. Auch wen du das nicht hören willst. Dazu lernen und in der Neuzeit ankommen.
XML ist dafür da das mich Zeilennummern nicht interessieren. Dafür gibt's die Knotenbeschreibung.
Mal ein Ansatzpunkt, hättest du aber auch selber suchen können.
BATCH Element aus XML-File auslesen
sorry. Auch wen du das nicht hören willst. Dazu lernen und in der Neuzeit ankommen.
XML ist dafür da das mich Zeilennummern nicht interessieren. Dafür gibt's die Knotenbeschreibung.
Mal ein Ansatzpunkt, hättest du aber auch selber suchen können.
BATCH Element aus XML-File auslesen
Hallo,
Sind die eben nicht, nur dein Anzeige Prg. schreibt dir die ohne Umbrechung so aufm Bildschirm. Je nach mit welchem Prg. du dir Text (XML) Dateien anschaust kannst du unterschiedliche Darstellungen bekommen. Windows braucht aber immer ein 0D0A(Hex) in der Datei damit es Wagenrücklauf und ein Zeilenvorschun dargestellt werden kann. Das was man Sieht ist immer nur ein Teil der Daten Schau mal mit einen Hexeditor dir die Daten an. Linux konnte schon immer ohne 0D0A(Hex) auskommen und dir es ordentlich darstellen. Deswegen kann mein Texteditor auch 2+2=5 Rechnen
Kommen die Daten aus einem Linux System?
Gruß,
Peter
Sind die eben nicht, nur dein Anzeige Prg. schreibt dir die ohne Umbrechung so aufm Bildschirm. Je nach mit welchem Prg. du dir Text (XML) Dateien anschaust kannst du unterschiedliche Darstellungen bekommen. Windows braucht aber immer ein 0D0A(Hex) in der Datei damit es Wagenrücklauf und ein Zeilenvorschun dargestellt werden kann. Das was man Sieht ist immer nur ein Teil der Daten Schau mal mit einen Hexeditor dir die Daten an. Linux konnte schon immer ohne 0D0A(Hex) auskommen und dir es ordentlich darstellen. Deswegen kann mein Texteditor auch 2+2=5 Rechnen
und wenn ich sie mit notepad++
Wähle dort die richtige Einstellung und alles wird gut.Kommen die Daten aus einem Linux System?
Gruß,
Peter
Poste mal die ersten Zeilen bis zum gewünschten Knoten unverändert (Inhalt kannst du natürlich schwärzen, aber die Struktur der Knoten muss erhalten bleiben)dann machen wir dir das schnell. Die ersten Zeilen sind nötig damit man per XPath den Pfad genau definieren kann.
Mit Batch die XML umformatieren ist absoluter Blödsinn, sorry. XML handelt man immer über einen Parser und mit der Powershell ist dass schnell ein Einzeiler auch innerhalb der Batch und das arbeitet dann auch zuverlässig.
Mit Batch die XML umformatieren ist absoluter Blödsinn, sorry. XML handelt man immer über einen Parser und mit der Powershell ist dass schnell ein Einzeiler auch innerhalb der Batch und das arbeitet dann auch zuverlässig.
Och mönsch bitte in Codetags posten, hast du doch oben auch schon gekonnt! Danke, denn sonst gehen hier Zeichen verloren.
Danke.
Bidde:
Ciao.
Bidde:
@echo off
set "quelle=D:\data.xml"
for /f "delims=" %%a in ('powershell -Executionpolicy ByPass -NoP -C "([xml](gc '%quelle%')).SelectSingleNode('/cXML/Request/InvoiceDetailRequest/InvoiceDetailRequestHeader/InvoicePartner/Contact[@role=\"from\"]/Name').'#text'"') do set "LeckerString=%%a"
echo %LeckerString%