Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Daten aus XML Dateien extrahieren und in Excel einfügen

Frage Entwicklung HTML

Mitglied: SGE-2001

SGE-2001 (Level 1) - Jetzt verbinden

24.04.2006, aktualisiert 09.05.2006, 14346 Aufrufe, 14 Kommentare

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.
Mitglied: gabrielgn
24.04.2006 um 12:18 Uhr
In Java könnte man das (Daten aus XML extrahieren) mit Hilfe von SAX oder DOM machen. Das Thema "in Excel einfügen habe ich auch im Zusammenhang mit Java gehört, aber selber nie probiert. Dennoch meine ich, dass es möglich ist.
Bitte warten ..
Mitglied: SGE-2001
24.04.2006 um 12:20 Uhr
Hallo,

hab leider absolut kein Plan von Java
Auch mit XML kenn ich mich eigentlich null aus.

Wäre halt cool gewesen wenn ich es trotzdem irgendwie hin bekmomen würde

Also es muss jetzt nicht zwingend in Excel eingefügt werden - wäre aber vorteilhaft.

Wenn ich jetzt die 3 Zahlenwerte in ne txt-Datei bekomme, wäre das auch schon ne grosse Hilfe!

Gibts nicht irgend ein Befehl, dass ich sagen kann "Gehe in Zeile xy, nimm die 1. Zahl und schreibe sie in die Datei xz" ??
Bitte warten ..
Mitglied: Biber
24.04.2006 um 13:11 Uhr
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
Bitte warten ..
Mitglied: SGE-2001
24.04.2006 um 13:19 Uhr
Also der oben geschriebene Textauszug ist aus einer existierenden XML Datei (mit ausgedachten Zahlenwerten). Die XML Datei ist noch um einige Zeilen länger

Habe jetzt den Befehl mal in ne Dosbox (also cmd) eingegeben aber leider passiert nix:

for /f "delims=<> tokens=1-3" %i in (test.xml) do @if [%i==backed_up_exchange_mailbox] @echo %j

oder:

for /f "delims=<> tokens=1-3" %i in (c:\xml\test.xml) do @if [%i==backed_up_exchange_mailbox] @echo %j

Die XML Datei heisst "test.xml" und liegt unter C:\xml\test.xml

Oder anders gefragt, was sollte denn passieren, wenn ich den Befehl unter cmd eingeb?


Und das mit dem "find" (Find "backed_up_exchange_mailbox" beispiel.xml >NurBackupSums.xml)

Muss ich dass auch in cmd eingeben? Oder wie?


Sorry für die blöden Fragen, kenn mich aber damit nicht wirklich aus.
Bitte warten ..
Mitglied: Biber
24.04.2006 um 13:28 Uhr
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
Bitte warten ..
Mitglied: SGE-2001
24.04.2006 um 15:02 Uhr
Was sollte denn passieren?

Bei mir kommt folgende ausgabe (cmd):

C:\XML>for /f "delims=<> tokens=1-2" %i in ('Find "backed_up_exchange_mailbox" c
:\xml\test.xml') do @echo %j
ECHO ist eingeschaltet (ON).
summary
new_processed_bytes
summary
new_processed_bytes

C:\XML>
Bitte warten ..
Mitglied: Biber
24.04.2006 um 15:21 Uhr
Das hier:
(=15:19:57 D:\temp=)

for /f "delims=<> tokens=1-2" %i in ('Find "backed_up_exchange_mailbox" f:\beispiel.xml') do @echo.%j

12345 E-Mail-Nachricht(en) in 123 Ordner(n) in 123 Mailboxen gesichert

-- ich schalte mal auf PN-Mode -- please mail a sample xmlfile to me... ---
Bitte warten ..
Mitglied: SGE-2001
25.04.2006 um 10:04 Uhr
Also mit dem Befehl:
Find "backed_up_exchange_mailbox" beispiel.xml >NurBackupSums.txt
hab ich jetzt genau dass, wass ich will in einer txt. Datei:


TEST.XML
</end_time><summary><backed_up_exchange_mailbox>653897 E-Mail-Nachricht(en) in 27355 Ordner(n) in 1110 Mailboxen gesichert
</backed_up_exchange_mailbox><new_processed_bytes>65,491,320,355 Byte verarbeitet in 9 Stunden, 13 Minuten und 7 Sekunden.
</end_time><summary><backed_up_exchange_mailbox>22941 E-Mail-Nachricht(en) in 266 Ordner(n) in 0 Mailboxen gesichert
</backed_up_exchange_mailbox><new_processed_bytes>2,320,620,068 Byte verarbeitet in 21 Minuten und 56 Sekunden.

mich interessieren jetzt allerdings nur diese beiden Sätze:
1. 653897 E-Mail-Nachricht(en) in 27355 Ordner(n) in 1110 Mailboxen gesichert
2. 22941 E-Mail-Nachricht(en) in 266 Ordner(n) in 0 Mailboxen gesichert

Wie kann ich diese denn jetzt aus der Datei rausziehn?
Und dann in Excel bekommen??

Oh man, das muss doch gehn
Bitte warten ..
Mitglied: Biber
25.04.2006 um 12:39 Uhr
..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
Bitte warten ..
Mitglied: SGE-2001
04.05.2006 um 09:29 Uhr
Hallo,

bin soweit jetzt klar gekommen, mit folgendem Befehl:

Find "backed_up_exchange_mailbox" *.xml >temp.xls

Nun hab ich noch eine zweite Zeile in der XML Datei, die ich gerne mit in die xls Datei geschrieben hätte... Name in der XML Datei: "start_time"

Kann ich mit dem FIND nicht nach 2 Werten in der XML Datei suchen lassen?

Also so in der Art: Find "backed_up_exchange_mailbox" && "start_time" *.xml >temp.xls


SGE-2001
Bitte warten ..
Mitglied: Biber
04.05.2006 um 09:47 Uhr
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
Bitte warten ..
Mitglied: SGE-2001
09.05.2006 um 11:11 Uhr
Hallo,

das mit den 2 Find Befehlen funktioniert zwar soweit, allerdings bei mehreren XML Dateien wird erst in allen XML Dateien nach "backed_up_exchange_mailbox" gesucht, das gefundene in die XLS Datei geschrieben; danach wird nach "start_time" gescuht und das gefundene auch in die XLS Datei geschreieben - nur halt hintendran.

Ich bräuchte es aber so, dass erst in der 1. XML Datei nach backed_up_exchange_mailbox", dann nach "start_time" gesucht wird, dass in eine XLS Datei geschriben wird und danach erst die nächste XML Datei durchsucht wird ... hoffe das war verständlich

Hier mal meine .bat Datei:

Find "backed_up_exchange_mailbox" *.xml >time.xls
Find "start_time" *.xml >>time.xls
pause

Mit *.xml werden halt alle XML Dateien, die in dem Verzeichnix liegen durchsucht.
Bitte warten ..
Mitglied: Biber
09.05.2006 um 12:47 Uhr
01.
For %%i in (*.xml) do ( 
02.
Find "backed_up_exchange_mailbox" %%i>>time.xls 
03.
Find "start_time" %%i>>time.xls)
Hope that Helps

Biber
Bitte warten ..
Mitglied: SGE-2001
09.05.2006 um 13:34 Uhr
Ok,

funktioniert bestens.
Danke !!!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
gelöst Aus Outlook 2013 Daten aus Tabellenfeldern in Excel übertragen (9)

Frage von ich2110 zum Thema Microsoft Office ...

Microsoft Office
gelöst Txt Dateien in Excel importieren (9)

Frage von Serbitar zum Thema Microsoft Office ...

VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

Microsoft Office
Mehr als 20 Excel Dateien öffnen gleichzeitig (7)

Frage von PizzaPepperoni zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...