chicagojaner
Goto Top

3 Tags aus XML per Batch auslesen

Hi,

stehe vor einem Problem und erhoffe mir von Euch den rettenden Hinweis:

Ich hab einen Ordner mit vielen vielen XML Dateien. Meine Aufgabe ist es, die für mich relevanten Daten aus den XML Dateien zu lesen. Mein Konstrukt steht soweit auch:

In der XML muss irgendwo folgender Part auftauchen:

<nummer>
<quelle>1</quelle>
<kursnummer>811</kursnummer>
<lfdnr>009</lfdnr>
<jahr>16</jahr>
</nummer>

Mein erste Suche sieht wie folgt aus:

findstr /L /S /M "<kursnummer>811</kursnummer>" C:\Ablage\Datenziel-XML\*.xml

Das klappt auch, die Batch listet mir alle XML Dateien aus.

Ich möchte aber auch die TAGS lfdnr und jahr integrieren. Ich hatte mir schon überlegt 3 batches laufen zu lassen:

1 sucht nach Kursnummer
2 nach lfdnr
3 nach Jahr

Das blöde ist nur, diese Tags tauchen auch in einem anderen Zusammenhang auf, so dass ich nur das ganze betrachten kann.

Wie ergänze ich meine Suche?

Content-ID: 545817

Url: https://administrator.de/forum/3-tags-aus-xml-per-batch-auslesen-545817.html

Ausgedruckt am: 11.04.2025 um 09:04 Uhr

Crusher79
Crusher79 11.02.2020 um 09:30:33 Uhr
Goto Top
Hi,

wieso nimmst nich PowerShell?

https://dotnet-helpers.com/powershell/reading-xml-files-with-powershell/

https://www.windowspro.de/script/xml-powershell-elemente-attribute-ausle ...

Alles andere ist nur gefrickel. Am einfachsten ist es, wenn du quasi mit der XML arbeitest. Und nich gegne die Struktur.

mfg Crusher
142970
142970 11.02.2020 aktualisiert um 10:25:10 Uhr
Goto Top
Zitat von @Crusher79:
wieso nimmst nich PowerShell?
Eben, das macht heute echt keiner mehr mit 80er Jahre Batch !

As simple as that
Get-ChildItem 'E:\Files' -File -Filter *.xml | ?{([xml](gc $_.Fullname)).SelectSingleNode('//nummer[kursnummer[.="811"] and lfdnr[.="009"] and jahr[.="16"]]')}  
Und wenn es unbedingt in einer Batch stehen muss, das geht auch
@echo off
powershell -EP ByPass -NoP -C "Get-ChildItem 'E:\Files' -File -Filter *.xml | ?{([xml](gc $_.Fullname)).SelectSingleNode('//nummer[kursnummer[.=\"811\"] and lfdnr[.=\"009\"] and jahr[.=\"16\"]]')}"