Top-Themen

Aktuelle Themen (A bis Z)

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

XML Datei so konvertieren das der inhalt in eine XLS kann?

Frage Entwicklung Batch & Shell

Mitglied: ooAlbert

ooAlbert (Level 1) - Jetzt verbinden

15.02.2008, aktualisiert 18.02.2008, 7823 Aufrufe, 10 Kommentare

hi,

ich hab hier einen auszug aus einer XML datei in der diverse informationen stehe die ich gern in einer XLS datei hätte damit man die überhaupt weiterbenutzen kann

Mal als beispiel für die Relevanten daten:

01.
<banklog dtab="" money="0" otab="0" player="Nullbull" rank="1" ts="1203019148000" type="2"> 
02.
        <item count="1" icon="inv_misc_gem_flamespessarite_02" id="23100" name="Glitzernder Flammenspessarit" qi="2" subtype="orange" type="gems"/> 
03.
      </banklog>
das sind drei aufeinanderfolgende Zeilen wovon für mich die Position: money, player, ts, type, item count, id und name interessant sind.

in der XML datei sind natürlich haufenweise diese einträge die auch alle untereinander sind im selben format.

Jetzt dachte ich das eine Batch das vielleicht leisten kann und mir das als TXT zeilenweise zusammenschreibt das ich das dann nur noch in Exel importieren muß und die daten in einer tabelle hätte vielelicht auch als semikolon/komma getrennte CSV, da ich ja nur die werte in den hochkommas brauche.

Hat da wer eine idee wie man das am besten anstellen könnte?
Mitglied: ooAlbert
16.02.2008 um 15:57 Uhr
ich hab mal bisschen rumprobiert:

01.
echo off 
02.
for /f "tokens=2,4,6,7 delims=="  %%i in (test.txt) do  @ECHO %%i %%j %%k %%l 
03.
 
04.
pause
Das bring aber irgendwie nicht das gewünschte ergebnis.
aber von der logik her sollte das so gehen. jeder neue block beginnt mit einem "=", da ich das hochkomma nicht nehmen kann, weil der dann meint einen syntaxfehler zu haben. Und ich brauch block(token) 2-4-6-7
Wenn die anweisung mal nur für die erste zeile gilt.
da aus der zweiten zeile ich ja nut token 1-3-4 brauche
und die dritte zeile ignoriert werden kann. danach wiederholt sich dieses konstrukt ja wieder.
Bitte warten ..
Mitglied: miniversum
17.02.2008 um 11:28 Uhr
versuchs mal so:
01.
@echo off 
02.
SETLOCAL ENABLEDELAYEDEXPANSION 
03.
 
04.
Set "infile=XMLdatei.xml" 
05.
Set "outfile=XLSdatei.csv" 
06.
 
07.
set nr=1 
08.
echo money;player;ts;type;item count;id;name>"%outfile%" 
09.
 
10.
FOR /F "usebackq  delims=" %%i in ("%infile%") do ( 
11.
  set line=%%i 
12.
  set line=!line:^<=! 
13.
  set line=!line:^>=! 
14.
 
15.
  if [!nr!] equ [3] ( 
16.
    echo !money!;!player!;!ts!;!type!;!itemcount!;!id!;!name!>>"%outfile%" 
17.
    set nr=1 
18.
19.
  if [!nr!] equ [2] ( 
20.
    FOR /F "tokens=3,7 delims== " %%a in ('echo !line!') do set "itemcount=%%~a" & set "id=%%~b" 
21.
    FOR /F "tokens=5 delims==" %%a in ('echo !line!') do set "name=%%~a" 
22.
    set name=!name:~0,-4! 
23.
    set nr=3 
24.
25.
 
26.
  if [!nr!] equ [1] ( 
27.
    FOR /F "tokens=5,9,13,15 delims== " %%a in ('echo !line!') do set "money=%%~a" & set "player=%%~b" & set "ts=%%~c" & set "type=%%~d" 
28.
    set nr=2 
29.
30.
)
miniversum
Bitte warten ..
Mitglied: ooAlbert
18.02.2008 um 09:51 Uhr
ich hab das mal ausprobiert das macht schon eher das was ich wollte nur scheint die Batch irgendwie in eine endlosschleife zu verfallen, ich brech die nach ner weile immer ab und es erzeugt trotzdem die CSV.


Ich hab gerade gesehen das die Datei doch nicht ganz so homogen ist wie gedacht:
01.
<banklog dtab="" money="200000" otab="" player="Nullbull" rank="1" ts="1203019273000" type="4"/> 
02.
      <banklog dtab="" money="0" otab="0" player="Nullbull" rank="1" ts="1203019150000" type="2"> 
03.
        <item count="1" icon="inv_misc_gem_flamespessarite_02" id="23100" name="Glitzernder Flammenspessarit" qi="2" subtype="orange" type="gems"/> 
04.
      </banklog>
vermutlich müßte man abprüfen können ob nach der zeile mit dem beginn "<banklog" eine Zeile mit begin "<item" kommt und wenn nicht die Routine eine neue Zeile für die CSV abarbeitet. denn das was in "<item" steht soll ja eh in der CSV an die zeile angefügt werden vom vorherigen"<banklog"

Beispiel:
200000, Nullbull, 1203019273000, 4
0, Nullbull, 1203019150000, 2, 1, 23100, Glitzernder Flammenspessarit
...
Bitte warten ..
Mitglied: miniversum
18.02.2008 um 11:23 Uhr
Ja der Automat den ich Programmiert hatte geht davon aus das immer die Drei Zeilen genau so aufeinander Folgen.
Schau mal obs damit geht:
01.
@echo off 
02.
SETLOCAL ENABLEDELAYEDEXPANSION 
03.
 
04.
Set "infile=XMLdatei.xml" 
05.
Set "outfile=XLSdatei.csv" 
06.
 
07.
set nr=1 
08.
echo money;player;ts;type;item count;id;name>"%outfile%" 
09.
 
10.
FOR /F "usebackq  delims=" %%i in ("%infile%") do ( 
11.
  set line=%%i 
12.
  set line=!line:^<=! 
13.
  set line=!line:^>=! 
14.
 
15.
  if [!nr!] equ [3] ( 
16.
    echo !money!;!player!;!ts!;!type!;!itemcount!;!id!;!name!>>"%outfile%" 
17.
    set nr=1 
18.
19.
 
20.
  if [!nr!] equ [2] ( 
21.
    FOR /F "tokens=1,3,7 delims== " %%a in ('echo !line!') do ( 
22.
      if [%%~a] equ [item] ( 
23.
        set "itemcount=%%~b" & set "id=%%~c" 
24.
        FOR /F "tokens=5 delims==" %%a in ('echo !line!') do set "name=%%~a" 
25.
        set name=!name:~0,-4! 
26.
        set nr=3 
27.
      ) else ( 
28.
        echo !money!;!player!;!ts!;!type!>>"%outfile%" 
29.
        set nr=1 
30.
31.
32.
33.
 
34.
  if [!nr!] equ [1] ( 
35.
    FOR /F "tokens=5,9,13,15 delims== " %%a in ('echo !line!') do set "money=%%~a" & set "player=%%~b" & set "ts=%%~c" & set "type=%%~d" 
36.
    set nr=2 
37.
38.
)
miniversum
Bitte warten ..
Mitglied: ooAlbert
18.02.2008 um 14:35 Uhr
son mist jetzt ist mir das Posting verschwunden

01.
money;player;ts;type;item count;id;name 
02.
money;player;ts;type 
03.
0;Nullbull;1203019150000;2;1;23100;Glitzernder Flammenspessarit 
04.
0;Nullbull;1203019150000;2 
05.
0;Nullbull;1203019148000;2;1;23100;Glitzernder Flammenspessarit 
06.
0;Nullbull;1203019148000;2 
07.
0;Adorinaa;1203017007000;1;6;25802;Schreckensgiftbeutel 
08.
0;Adorinaa;1203017007000;1 
09.
0;Adorinaa;1203016974000;2;1;27499;Rolle der Intelligenz V 
10.
0;Adorinaa;1203016974000;2 
11.
0;Adorinaa;1203016963000;1;1;27498;Rolle der Beweglichkeit V 
12.
0;Adorinaa;1203016963000;1 
13.
... 
14.
300000;Adorinaa;1201790140000;4"/ 
15.
100000;Salome;1201235764000;4"/ 
16.
200000;Bizzel;1201215842000;4"/ 
17.
...
an sich klappt das jetzt, bis auf das die zeilen zweimal erscheinen und die allererste zeile ignoriert wird. Bei der einen transaktion hab ich halt statt der 4 noch das ""/" dabei, kann aber daran leigen das da mehrfach nur einzeilige logeinträge waren



01.
<banklog dtab="" money="200000" otab="" player="Nullbull" rank="1" ts="1203019273000" type="4"/> 
02.
 
03.
... 
04.
 
05.
<banklog dtab="" money="300000" otab="" player="Adorinaa" rank="3" ts="1201790140000" type="4"/> 
06.
      <banklog dtab="" money="100000" otab="" player="Salome" rank="1" ts="1201235764000" type="4"/> 
07.
      <banklog dtab="" money="200000" otab="" player="Bizzel" rank="1" ts="1201215842000" type="4"/> 
08.
      <banklog dtab="" money="0" otab="0" player="Poisenive" rank="1" ts="1200867904000" type="2"> 
09.
        <item count="5" icon="inv_potion_137" id="22832" name="Erstklassiger Manatrank" qi="1" subtype="" type="consumables"/> 
10.
      </banklog> 
11.
 
12.
...
Bitte warten ..
Mitglied: miniversum
18.02.2008 um 14:49 Uhr
Versuch das mal:
01.
@echo off 
02.
SETLOCAL ENABLEDELAYEDEXPANSION 
03.
 
04.
Set "infile=XMLdatei.xml" 
05.
Set "outfile=XLSdatei.csv" 
06.
 
07.
set nr=1 
08.
echo money;player;ts;type;item count;id;name>"%outfile%" 
09.
 
10.
FOR /F "usebackq  delims=" %%i in ("%infile%") do ( 
11.
  set line=%%i 
12.
  set line=!line:^<=! 
13.
  set line=!line:^>=! 
14.
 
15.
  if [!nr!] equ [3] ( 
16.
    echo !money!;!player!;!ts!;!type!;!itemcount!;!id!;!name!>>"%outfile%" 
17.
    set nr=1 
18.
19.
 
20.
  if [!nr!] equ [2] ( 
21.
    FOR /F "tokens=1,3,7 delims== " %%a in ('echo !line!') do set "typ=%%~a" & set "itemcount=%%~b" & set "id=%%~c" 
22.
    if [!typ!] equ [item] ( 
23.
      FOR /F "tokens=5 delims==" %%a in ('echo !line!') do set "name=%%~a" 
24.
      set name=!name:~0,-4! 
25.
      set nr=3 
26.
    ) else ( 
27.
      echo !money!;!player!;!ts!;!type!>>"%outfile%" 
28.
      set nr=4 
29.
30.
31.
 
32.
  if [!nr!] equ [1] ( 
33.
    FOR /F "tokens=5,9,13,15 delims== " %%a in ('echo !line!') do set "money=%%~a" & set "player=%%~b" & set "ts=%%~c" & set "type=%%~d" 
34.
    set nr=2 
35.
36.
 
37.
  if [!nr!] equ [4] ( 
38.
    set nr=1 
39.
40.
)
Bitte warten ..
Mitglied: ooAlbert
18.02.2008 um 14:57 Uhr
das sieht dann jetzt so aus:

01.
money;player;ts;type;item count;id;name 
02.
money;player;ts;type 
03.
inv_misc_gem_flamespessarite_02;Glitzernder;subtype;type 
04.
0;Nullbull;1203019148000;2;1;23100;Glitzernder Flammenspessarit 
05.
0;Nullbull;1203019148000;2 
06.
inv_misc_organ_04;Schreckensgiftbeutel;;consumables"/ 
07.
0;Adorinaa;1203016974000;2;1;27499;Rolle der Intelligenz V 
08.
0;Adorinaa;1203016974000;2 
09.
inv_scroll_02;Rolle;qi;subtype 
10.
0;Zere;1202912372000;2;1;15763;Muster: Blaue Drachenschuppenschultern 
11.
0;Zere;1202912372000;2 
12.
inv_fabric_purplefire_01;Runenstoff;;tradegoods"/ 
13.
0;Crüxshadows;1202899204000;2;19;21877;Netherstoff 
14.
0;Crüxshadows;1202899204000;2 
15.
...
Achso das script bleibt in der endlosschleife hängen.
Bitte warten ..
Mitglied: miniversum
18.02.2008 um 16:59 Uhr
So Ich hab die ganze Verarbeitung nochmal neu aufgebaut und getestet.
So sollte es gehen:
01.
@echo off 
02.
SETLOCAL ENABLEDELAYEDEXPANSION 
03.
 
04.
Set "infile=XMLdatei.xml" 
05.
Set "outfile=XLSdatei.csv" 
06.
 
07.
set "lines=" 
08.
if exist "%outfile%" del "%outfile%" 
09.
 
10.
FOR /F "usebackq  delims=" %%i in ("%infile%") do ( 
11.
 
12.
  set line=%%i 
13.
  set line=!line:^<=! 
14.
  set line=!line:/^>=! 
15.
  set line=!line:^>=! 
16.
 
17.
  FOR /F "tokens=1 delims= " %%a in ('echo !line!') do set "typ=%%~a" 
18.
 
19.
  if [!typ!] equ [banklog] ( 
20.
    if [!lines!] equ [1] echo !money!;!player!;!ts!;!type!>>"%outfile%" 
21.
    FOR /F "tokens=5,9,13,15 delims== " %%a in ('echo !line!') do set "money=%%~a" & set "player=%%~b" & set "ts=%%~c" & set "type=%%~d" 
22.
    set "lines=1" 
23.
24.
 
25.
  if [!typ!] equ [item] ( 
26.
    FOR /F "tokens=3,7,9,13,15 delims== " %%a in ('echo !line!') do set "itemcount=%%~a" & set "id=%%~b" 
27.
    FOR /F "tokens=5 delims==" %%a in ('echo !line!') do set "name=%%~a" 
28.
    set name=!name:~0,-4! 
29.
    set "lines=3" 
30.
31.
 
32.
  if [!typ!] equ [/banklog] ( 
33.
    echo !money!;!player!;!ts!;!type!;!itemcount!;!id!;!name!>>"%outfile%" 
34.
    set "lines=1" 
35.
36.
 
37.
)
miniversum
Bitte warten ..
Mitglied: ooAlbert
18.02.2008 um 19:56 Uhr
ich hab das gerade getestet, das script läuft jetzt durch. die erste zeile ist aber immernoch ignoriert und die zeilen sind noch doppelt ansinsten sieht es super aus.

01.
0;Nullbull;1203019150000;2;1;23100;Glitzernder Flammenspessarit 
02.
0;Nullbull;1203019150000;2 
03.
0;Nullbull;1203019148000;2;1;23100;Glitzernder Flammenspessarit 
04.
0;Nullbull;1203019148000;2 
05.
0;Adorinaa;1203017007000;1;6;25802;Schreckensgiftbeutel 
06.
0;Adorinaa;1203017007000;1 
07.
0;Adorinaa;1203016974000;2;1;27499;Rolle der Intelligenz V 
08.
0;Adorinaa;1203016974000;2 
09.
0;Adorinaa;1203016963000;1;1;27498;Rolle der Beweglichkeit V 
10.
0;Adorinaa;1203016963000;1
ich würd dir ja die XML auch mal schicken falls das was nutzt aber hier kann man irgendwie nichts anhängen.
Bitte warten ..
Mitglied: miniversum
18.02.2008 um 21:14 Uhr
Also bei mir läufts problemlos.
miniversum
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Inhalt von XML-Dateien ändern
gelöst Frage von Kedi123Batch & Shell14 Kommentare

Hallo zusammen, wir haben täglich viele XML-Dateien, die unter anderem jeweils eine Festplattengröße in Byte enthalten (Zeile 16). Um ...

XML
CSV bzw. XLS Dateien in ein XML Schema einbinden
gelöst Frage von fisi-floXML3 Kommentare

Hallo allerseits, bisher habe ich von Lieferanten immer unterschiedliche Preislisten der Lieferanten im CSV oder XLS Dateiformat bekommen. Selbst ...

VB for Applications
Inhalt einer XML Datei Script ändern
gelöst Frage von chris27584VB for Applications4 Kommentare

Hallo zusammen, in folgendem Script <?xml version="1.0"?> -<SkClientConfig xmlns:xsi=" xmlns:xsd=" <LastServerIndex>1</LastServerIndex> <LastUser>11111</LastUser> <LastWorkplace>2358</LastWorkplace> -<SerializableFont> <FontValue>Microsoft Sans Serif; 8,25pt</FontValue> </SerializableFont> ...

Batch & Shell
XML-Inhalt zur Ordner- und Dateiumbenennung nutzen
gelöst Frage von tardezyxBatch & Shell3 Kommentare

Hallo, in zahlreichen Unterordnern befindet sich jeweils genau eine XML-Datei derselben Grammatik, von denen ich <title> und <year> gerne ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 56 MinutenInternet1 Kommentar

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 7 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 18 StundenWindows 103 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 20 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...