XML Datei so konvertieren das der inhalt in eine XLS kann?
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:
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?
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:
<banklog dtab="" money="0" otab="0" player="Nullbull" rank="1" ts="1203019148000" type="2">
<item count="1" icon="inv_misc_gem_flamespessarite_02" id="23100" name="Glitzernder Flammenspessarit" qi="2" subtype="orange" type="gems"/>
</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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 80859
Url: https://administrator.de/contentid/80859
Printed on: April 26, 2024 at 14:04 o'clock
10 Comments
Latest comment
versuchs mal so:
miniversum
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
Set "infile=XMLdatei.xml"
Set "outfile=XLSdatei.csv"
set nr=1
echo money;player;ts;type;item count;id;name>"%outfile%"
FOR /F "usebackq delims=" %%i in ("%infile%") do (
set line=%%i
set line=!line:^<=!
set line=!line:^>=!
if [!nr!] equ [3] (
echo !money!;!player!;!ts!;!type!;!itemcount!;!id!;!name!>>"%outfile%"
set nr=1
)
if [!nr!] equ [2] (
FOR /F "tokens=3,7 delims== " %%a in ('echo !line!') do set "itemcount=%%~a" & set "id=%%~b"
FOR /F "tokens=5 delims==" %%a in ('echo !line!') do set "name=%%~a"
set name=!name:~0,-4!
set nr=3
)
if [!nr!] equ [1] (
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"
set nr=2
)
)
Ja der Automat den ich Programmiert hatte geht davon aus das immer die Drei Zeilen genau so aufeinander Folgen.
Schau mal obs damit geht:
miniversum
Schau mal obs damit geht:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
Set "infile=XMLdatei.xml"
Set "outfile=XLSdatei.csv"
set nr=1
echo money;player;ts;type;item count;id;name>"%outfile%"
FOR /F "usebackq delims=" %%i in ("%infile%") do (
set line=%%i
set line=!line:^<=!
set line=!line:^>=!
if [!nr!] equ [3] (
echo !money!;!player!;!ts!;!type!;!itemcount!;!id!;!name!>>"%outfile%"
set nr=1
)
if [!nr!] equ [2] (
FOR /F "tokens=1,3,7 delims== " %%a in ('echo !line!') do (
if [%%~a] equ [item] (
set "itemcount=%%~b" & set "id=%%~c"
FOR /F "tokens=5 delims==" %%a in ('echo !line!') do set "name=%%~a"
set name=!name:~0,-4!
set nr=3
) else (
echo !money!;!player!;!ts!;!type!>>"%outfile%"
set nr=1
)
)
)
if [!nr!] equ [1] (
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"
set nr=2
)
)
Versuch das mal:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
Set "infile=XMLdatei.xml"
Set "outfile=XLSdatei.csv"
set nr=1
echo money;player;ts;type;item count;id;name>"%outfile%"
FOR /F "usebackq delims=" %%i in ("%infile%") do (
set line=%%i
set line=!line:^<=!
set line=!line:^>=!
if [!nr!] equ [3] (
echo !money!;!player!;!ts!;!type!;!itemcount!;!id!;!name!>>"%outfile%"
set nr=1
)
if [!nr!] equ [2] (
FOR /F "tokens=1,3,7 delims== " %%a in ('echo !line!') do set "typ=%%~a" & set "itemcount=%%~b" & set "id=%%~c"
if [!typ!] equ [item] (
FOR /F "tokens=5 delims==" %%a in ('echo !line!') do set "name=%%~a"
set name=!name:~0,-4!
set nr=3
) else (
echo !money!;!player!;!ts!;!type!>>"%outfile%"
set nr=4
)
)
if [!nr!] equ [1] (
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"
set nr=2
)
if [!nr!] equ [4] (
set nr=1
)
)
So Ich hab die ganze Verarbeitung nochmal neu aufgebaut und getestet.
So sollte es gehen:
miniversum
So sollte es gehen:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
Set "infile=XMLdatei.xml"
Set "outfile=XLSdatei.csv"
set "lines="
if exist "%outfile%" del "%outfile%"
FOR /F "usebackq delims=" %%i in ("%infile%") do (
set line=%%i
set line=!line:^<=!
set line=!line:/^>=!
set line=!line:^>=!
FOR /F "tokens=1 delims= " %%a in ('echo !line!') do set "typ=%%~a"
if [!typ!] equ [banklog] (
if [!lines!] equ [1] echo !money!;!player!;!ts!;!type!>>"%outfile%"
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"
set "lines=1"
)
if [!typ!] equ [item] (
FOR /F "tokens=3,7,9,13,15 delims== " %%a in ('echo !line!') do set "itemcount=%%~a" & set "id=%%~b"
FOR /F "tokens=5 delims==" %%a in ('echo !line!') do set "name=%%~a"
set name=!name:~0,-4!
set "lines=3"
)
if [!typ!] equ [/banklog] (
echo !money!;!player!;!ts!;!type!;!itemcount!;!id!;!name!>>"%outfile%"
set "lines=1"
)
)
miniversum