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
Hat da wer eine idee wie man das am besten anstellen könnte?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 80859
Url: https://administrator.de/forum/xml-datei-so-konvertieren-das-der-inhalt-in-eine-xls-kann-80859.html
Ausgedruckt am: 23.04.2025 um 06:04 Uhr
10 Kommentare
Neuester Kommentar
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