Bestimmte Einträge aus tausenden identisch aufgebauten XML-Dateien in TXT schreiben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Bestimmte Einträge aus tausenden identisch aufgebauten XML-Dateien in TXT schreiben

    Hallo,

    eigentlich steht das Problem schon im Titel ;)

    Ich habe mehrere tausend XML-Dateien, die der gleichen Grammatik folgen und würde gerne bestimmte Informationen daraus in eine einzige Textdatei schreiben, wobei die einzelnen Einträge mittels selbst definiertem Trennzeichen (Tabulator oder Semikolon ist erstmal egal - dient zum späteren Datenimport in Excel) in eine Zeile geschrieben werden sollen und für jede XML-Datei genau 1 Zeile belegt werden soll. Die XML-Dateien befinden sich darüber hinaus in Unterordnern, so dass der Parser diese selbst anhand der Dateiendung (.nfo) finden müsste.

    Es liegt folgende Ordnerstruktur vor:

    Quellcode

    1. T:\Daten\ERZ\Mo Sil kohi (2008)\Mo Sil kohi (2008).nfo
    2. T:\Daten\GRE\Da Fi nubi (2006)\Da Fi nubi (2006).nfo
    3. usw.


    D.h. alle .nfo-Dateien befinden sich verstreut in sämtlichen Unterordnern von T:\Daten.

    Die XML sei wie folgt aufgebaut ("..." ist unwichtiges Zeugs):

    Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    3. <title>Dies ist ein Titel</title>
    4. <year>2006</year>
    5. <durance>5.3</durance>
    6. <members>1,217</members>
    7. <lead>Alfred / Josef / Mike</lead>
    8. ...
    9. <extract>
    10. <details>
    11. <astate>
    12. <hidden>stealth</hidden>
    13. ...
    14. </astate>
    15. <vstate>
    16. <hidden>block</hidden>
    17. ...
    18. </vstate>
    19. </details>
    20. </extract>
    21. </data>
    Alles anzeigen


    Herauskommen soll die folgende Zeile (Tabulatorenabstand):

    Quellcode

    1. Dies ist ein Titel 2006 5.3 Alfred / Josef / Mike stealth block


    Danach soll automatisch Zeilenumbruch rein und die nächste .nfo-Datei geparst werden, bis das Programm keine weiteren findet.

    Ist das überhaupt möglich?

    Danke und Gruß!
  • Habe das mittels Batch-File gelöst: administrator.de/Mittels_Batch…_Textdatei_schreiben.html

    Wer auch so etwas braucht, hier der Code nach einigen Anforderungsveränderungen:

    Quellcode

    1. @echo off & setlocal
    2. set "Basis=%1"
    3. set "CSV=list.csv"
    4. set "Delim=;"
    5. pushd "%Basis%"
    6. del "%CSV%" 2>nul
    7. for /f "delims=" %%i in ('dir /s /b *.nfo') do call :ProcessFile "%%i"
    8. popd
    9. goto :eof
    10. :ProcessFile
    11. set "Record="
    12. for %%f in ("<title>" "<year>" "<durance>" "<lead>") do for /f "tokens=3 delims=<>" %%v in ('findstr %%f %1') do call :ProcessField "%%v"
    13. set "Hidden="
    14. for /f "tokens=3 delims=<>" %%v in ('findstr "<hidden>" %1') do set "Hidden=%%v"
    15. for /f "tokens=3 delims=<>" %%v in ('findstr "<size>" %1') do set "Hidden=%Hidden%: %%v"
    16. >>"%CSV%" echo %Record%%Hidden%
    17. goto :eof
    18. :ProcessField
    19. set Record=%Record%%1%Delim%
    20. goto :eof
    Alles anzeigen


    Gruß!