
20309
24.04.2006, aktualisiert am 09.05.2006 um 13:34:15 Uhr
Daten aus XML Dateien extrahieren und in Excel einfügen
Hallo,
ich habe mehrere XML Dateien (täglich eine), die automatisch als log für einen Exchange Server generiert werden.
Es geht jetzt erst mal um nur 1 dieser Dateien.
In der XML Datei sind etliche Zeilen XML Code enthalten. Mich interresieren daraus aber nur wenige Angaben, die ich in eine Excel Tabelle einfügen muss.
Dabei geht es um:
- Anzahl der E-Mail Nachrichten
- Anzahl der Ordner
- Anzahl der Mailboxen
...
<summary>
<backed_up_exchange_mailbox>12345 E-Mail-Nachricht(en) in 123 Ordner(n) in 123 Mailboxen gesichert</backed_up_exchange_mailbox>
<new_processed_bytes>12,345,657 Byte verarbeitet in 1 Stunden, 23 Minuten und 4 Sekunden.</new_processed_bytes>
<vlm_hist_rateformat2>Durchsatzrate: 123 MB/Min.</vlm_hist_rateformat2>
</summary>
...
Der Rest ist uninterresant.
Wie kann ich diese Angaben denn nun in Excel bekommen?
Da es etliche solcher Dateien sind, wär es eine irsinnige Arbeit, alles per Hand in Excel einzutragen.
Hoffe mir kann jemand weiterhelfen
MfG
Torsten.
ich habe mehrere XML Dateien (täglich eine), die automatisch als log für einen Exchange Server generiert werden.
Es geht jetzt erst mal um nur 1 dieser Dateien.
In der XML Datei sind etliche Zeilen XML Code enthalten. Mich interresieren daraus aber nur wenige Angaben, die ich in eine Excel Tabelle einfügen muss.
Dabei geht es um:
- Anzahl der E-Mail Nachrichten
- Anzahl der Ordner
- Anzahl der Mailboxen
...
<summary>
<backed_up_exchange_mailbox>12345 E-Mail-Nachricht(en) in 123 Ordner(n) in 123 Mailboxen gesichert</backed_up_exchange_mailbox>
<new_processed_bytes>12,345,657 Byte verarbeitet in 1 Stunden, 23 Minuten und 4 Sekunden.</new_processed_bytes>
<vlm_hist_rateformat2>Durchsatzrate: 123 MB/Min.</vlm_hist_rateformat2>
</summary>
...
Der Rest ist uninterresant.
Wie kann ich diese Angaben denn nun in Excel bekommen?
Da es etliche solcher Dateien sind, wär es eine irsinnige Arbeit, alles per Hand in Excel einzutragen.
Hoffe mir kann jemand weiterhelfen
MfG
Torsten.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 31011
Url: https://administrator.de/forum/daten-aus-xml-dateien-extrahieren-und-in-excel-einfuegen-31011.html
Ausgedruckt am: 19.04.2025 um 10:04 Uhr
14 Kommentare
Neuester Kommentar
Du könntest mit einem Batch drüberlaufen und aus den relevanten XML-Tags mit einer FOR /F ...In (xmldate.xml) Do..-Anweisung eine *csv-Datei generieren.
Aber mit dem oben beschriebenen Sax-Parser wäre es etwas professioneller.
Ist das oben gepostete eine realistische XML-Datei?
Wenn ja, ist die Aufdröselung ziemlich simpel:
(Test am CMD-Prompt
for /f "delims=<> tokens=1-3" %i in (beispiel.xml) do @if [%i==backed_up_exchange_mailbox] @echo %j
12345 E-Mail-Nachricht(en) in 123 Ordner(n) in 123 Mailboxen gesichert
...und aus diesen Rohdaten wiederum Einzelfelder machen.
Und wenn Dich aus dieser "großen" XML-Datei nur 3 Tags interessieren, dann kannst Du vorher die relevaten Daten sogar mir "find" extrahieren.
Find "backed_up_exchange_mailbox" beispiel.xml >NurBackupSums.xml
..etc.
Grüße
Biber
Aber mit dem oben beschriebenen Sax-Parser wäre es etwas professioneller.
Ist das oben gepostete eine realistische XML-Datei?
Wenn ja, ist die Aufdröselung ziemlich simpel:
(Test am CMD-Prompt
for /f "delims=<> tokens=1-3" %i in (beispiel.xml) do @if [%i==backed_up_exchange_mailbox] @echo %j
12345 E-Mail-Nachricht(en) in 123 Ordner(n) in 123 Mailboxen gesichert
...und aus diesen Rohdaten wiederum Einzelfelder machen.
Und wenn Dich aus dieser "großen" XML-Datei nur 3 Tags interessieren, dann kannst Du vorher die relevaten Daten sogar mir "find" extrahieren.
Find "backed_up_exchange_mailbox" beispiel.xml >NurBackupSums.xml
..etc.
Grüße
Biber
Sorry, hatte zwei Zeichen zu viel gelöscht, pardon
for /f "delims=<> tokens=1-2" %i in (c:\xml\test.xml) do @if [%i]==[backed_up_exchange_mailbox] @echo %j
-oder-
for /f "delims=<> tokens=1-2" %i in ('Find "backed_up_exchange_mailbox" c:\xml\test.xml') do @echo %j
Die zweite Variante ist natürlich -zigmal schneller.
Gruß
biber
for /f "delims=<> tokens=1-2" %i in (c:\xml\test.xml) do @if [%i]==[backed_up_exchange_mailbox] @echo %j
-oder-
for /f "delims=<> tokens=1-2" %i in ('Find "backed_up_exchange_mailbox" c:\xml\test.xml') do @echo %j
Die zweite Variante ist natürlich -zigmal schneller.
Gruß
biber
..der Rest ist pillepalle:
(=12:33:11 D:\temp=) Demo am CMD-Prompt:
for /f "tokens=1,4,7" %i in ("12345 E-Mail-Nachricht(en) in 123 Ordner(n) in 123 Mailboxen gesichert") do @echo %i %j %k
12345 123 123
-oder im Batch:
Find "backed_up_exchange_mailbox" beispiel.xml|find "summary" >NurBackupSums.txt
for /f "tokens=1,4,7" %%i in (NurbackupSums.txt) do @echo %%i ;%%j;%%k >>Summary.csv
Dann stehen die drei Zahlen in der Summary.csv.
Thats all.
Gruß
Biber
(=12:33:11 D:\temp=) Demo am CMD-Prompt:
for /f "tokens=1,4,7" %i in ("12345 E-Mail-Nachricht(en) in 123 Ordner(n) in 123 Mailboxen gesichert") do @echo %i %j %k
12345 123 123
-oder im Batch:
Find "backed_up_exchange_mailbox" beispiel.xml|find "summary" >NurBackupSums.txt
for /f "tokens=1,4,7" %%i in (NurbackupSums.txt) do @echo %%i ;%%j;%%k >>Summary.csv
Dann stehen die drei Zahlen in der Summary.csv.
Thats all.
Gruß
Biber
Nein, SGE-2001,
Du musst 2 Find-Befehle nacheinander eingeben:
Find "backed_up_exchange_mailbox" beispiel.xml >NurBackupSums.txt
..und danach:
Find "start_time" beispiel.xml >>NurBackupSums.txt
Beachten musst Du nur, dass der zweite Find-Befehl "anhängen" soll mit ">>" statt die Extraktdatei neu zu erzeugen.
Alternativ könntest Du auch "Findstr.exe" statt "Find" verwenden. Dort kannst Du auch nach mehreren Suchtexten suchen.
Siehe in der Hilfe ( "FindStr.exe /?" )
Gruß
Biber
Du musst 2 Find-Befehle nacheinander eingeben:
Find "backed_up_exchange_mailbox" beispiel.xml >NurBackupSums.txt
..und danach:
Find "start_time" beispiel.xml >>NurBackupSums.txt
Beachten musst Du nur, dass der zweite Find-Befehl "anhängen" soll mit ">>" statt die Extraktdatei neu zu erzeugen.
Alternativ könntest Du auch "Findstr.exe" statt "Find" verwenden. Dort kannst Du auch nach mehreren Suchtexten suchen.
Siehe in der Hilfe ( "FindStr.exe /?" )
Gruß
Biber