XML Datei per Batch auslesen und in excel oder txt kopieren
Hallo an alle,
habe eine Frage die möglicherweise schon mal gestellt wurde.
Leider komme ich nicht weiter!?
Ich möchte in einer XML Datei bestimmte Felder auslesen und in eine Txt oder excel datei speichern.
Geht das mit Batch oder Vbs überhaupt?
Wenn ja, habt ihr einen Tipp.
hier ein einblich in die XML Datei
- <cpe-item name="cpe:/a:1024cms:1024_cms:0.7">
<title xml:lang="en-US">1024cms.org 1024 CMS 0.7</title>
<meta:item-metadata modification-date="2010-12-14T19:38:32.197Z" status="DRAFT" nvd-id="121218" />
</cpe-item>
- <cpe-item name="cpe:/a:1024cms:1024_cms:1.2.5">
<title xml:lang="en-US">1024cms.org 1024 CMS 1.2.5</title>
<meta:item-metadata modification-date="2010-12-14T19:38:32.240Z" status="DRAFT" nvd-id="121219" />
Ich bräuchte folgende Felder bzw. werte:
title --> das funktioniert mit Set "Xmltag=title" for /f "delims=>/< tokens=3" %%i in ('find "%xmltag%" %XMLDATEI%') do echo %%i
aber damit habe ich Probleme !
status
nvd-id
und sollte so aussehen
xxx.txt
"nvd-id";"title";"status"
"121218";"1024cms.org 1024 CMS 0.7";"DRAFT"
"121219";"1024cms.org 1024 CMS 1.2.5";"DRAFT"
"121214";"1024cms.org 1024 CMS 1.3.1";"DRAFT"
oder
xxx.xlsx
nvd-id title status
121218 1024cms.org 1024 CMS 0.7 DRAFT
121219 1024cms.org 1024 CMS 1.2.5 DRAFT
121214 1024cms.org 1024 CMS 1.3.1 DRAFT
kann mir einer Weiter helfen?
LG
habe eine Frage die möglicherweise schon mal gestellt wurde.
Leider komme ich nicht weiter!?
Ich möchte in einer XML Datei bestimmte Felder auslesen und in eine Txt oder excel datei speichern.
Geht das mit Batch oder Vbs überhaupt?
Wenn ja, habt ihr einen Tipp.
hier ein einblich in die XML Datei
- <cpe-item name="cpe:/a:1024cms:1024_cms:0.7">
<title xml:lang="en-US">1024cms.org 1024 CMS 0.7</title>
<meta:item-metadata modification-date="2010-12-14T19:38:32.197Z" status="DRAFT" nvd-id="121218" />
</cpe-item>
- <cpe-item name="cpe:/a:1024cms:1024_cms:1.2.5">
<title xml:lang="en-US">1024cms.org 1024 CMS 1.2.5</title>
<meta:item-metadata modification-date="2010-12-14T19:38:32.240Z" status="DRAFT" nvd-id="121219" />
Ich bräuchte folgende Felder bzw. werte:
title --> das funktioniert mit Set "Xmltag=title" for /f "delims=>/< tokens=3" %%i in ('find "%xmltag%" %XMLDATEI%') do echo %%i
aber damit habe ich Probleme !
status
nvd-id
und sollte so aussehen
xxx.txt
"nvd-id";"title";"status"
"121218";"1024cms.org 1024 CMS 0.7";"DRAFT"
"121219";"1024cms.org 1024 CMS 1.2.5";"DRAFT"
"121214";"1024cms.org 1024 CMS 1.3.1";"DRAFT"
oder
xxx.xlsx
nvd-id title status
121218 1024cms.org 1024 CMS 0.7 DRAFT
121219 1024cms.org 1024 CMS 1.2.5 DRAFT
121214 1024cms.org 1024 CMS 1.3.1 DRAFT
kann mir einer Weiter helfen?
LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 207174
Url: https://administrator.de/contentid/207174
Ausgedruckt am: 25.11.2024 um 21:11 Uhr
2 Kommentare
Neuester Kommentar
Hi,
also mit VBS kann ich Dir weiterhelfen. Da du aber nur einen Ausschnitt aus deinem XML-File gepostet hast habe ich das Beispiel-XML-File mal erweitert damit es mit VBS funktioniert (da im XML Namespaces verwendet werden die im VBS-Script mit angegeben werden müssen)
Beispiel XML-File mit Namespace-Prefix-Deklaration
VBS-Code zum Parsen der XML-Datei und Exportieren in eine Textdatei
Variablen in Zeile 1 und 2 sind anzupassen.
Am besten du postest mal den Anfang der XML-Datei in dem die Namespace-Deklarationen vermerkt sein sollten dann passe ich Dir den Code an.
Bitte verwende Tags wenn du Code postest damit dieser nicht "verhunzt" wird. (Siehe FAQ)
Grüße Uwe
also mit VBS kann ich Dir weiterhelfen. Da du aber nur einen Ausschnitt aus deinem XML-File gepostet hast habe ich das Beispiel-XML-File mal erweitert damit es mit VBS funktioniert (da im XML Namespaces verwendet werden die im VBS-Script mit angegeben werden müssen)
Beispiel XML-File mit Namespace-Prefix-Deklaration
<?xml version="1.0" encoding="utf-8"?>
<items xmlns:meta="http://www.meinServer.de/adresse">
<cpe-item name="cpe:/a:1024cms:1024_cms:0.7">
<title xml:lang="en-US">1024cms.org 1024 CMS 0.7</title>
<meta:item-metadata modification-date="2010-12-14T19:38:32.197Z" status="DRAFT" nvd-id="121218" />
</cpe-item>
<cpe-item name="cpe:/a:1024cms:1024_cms:1.2.5">
<title xml:lang="en-US">1024cms.org 1024 CMS 1.2.5</title>
<meta:item-metadata modification-date="2010-12-14T19:38:32.240Z" status="DRAFT" nvd-id="121219" />
</cpe-item>
</items>
VBS-Code zum Parsen der XML-Datei und Exportieren in eine Textdatei
Variablen in Zeile 1 und 2 sind anzupassen.
xmlFile = "D:\data.xml"
outputTextfile = "D:\output.txt"
Set xmlDoc = WScript.CreateObject("Msxml2.DOMDocument")
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
xmlDoc.async = False
xmlDoc.Load xmlFile
If xmlDoc.parseError.errorCode <> 0 Then
WScript.Echo xmlDoc.parseError.reason
WScript.Quit 1
End If
xmlDoc.setProperty "SelectionLanguage", "XPath"
xmlDoc.setProperty "SelectionNamespaces", "xmlns:meta='http://www.meinServer.de/adresse'"
Set f = fso.OpenTextFile(outputTextfile, 2, True)
'Schreibe Text-Headers
f.WriteLine(Chr(34) & "nvdid" & Chr(34) & ";" & Chr(34) & "title" & chr(34) & ";" & Chr(34) & "status" & Chr(34))
Set oDoc = xmlDoc.documentElement
Set xmlCPEItems = oDoc.getElementsByTagName("cpe-item")
If xmlCPEItems.length > 0 Then
For Each el In xmlCPEItems
title = el.selectSingleNode("title").text
status = el.selectSingleNode("meta:item-metadata").attributes.getNamedItem("status").text
nvdid = el.selectSingleNode("meta:item-metadata").attributes.getNamedItem("nvd-id").text
f.WriteLine(Chr(34) & nvdid & Chr(34) & ";" & Chr(34) & title & chr(34) & ";" & Chr(34) & status & Chr(34))
Next
End If
f.Close
Set xmlDoc = Nothing
Bitte verwende Tags wenn du Code postest damit dieser nicht "verhunzt" wird. (Siehe FAQ)
Grüße Uwe
Hallo JL.Fdez,
Mit
Gruss!
Mit
pure batch
sieht es so aus:@echo off&setlocal
set "outfile=out.csv"
set "tfile=%temp%\%random%.tmp"
(for /f tokens^=3^,4^,6delims^=^<^>^" %%i in ('findstr "title meta" file') do (
if "%%k"=="" (<nul set/p"=%%i:") else echo(%%j:%%k
))>"%tfile%"
(for /f "usebackq tokens=1-3 delims=:" %%i in ("%tfile%") do echo("%%k","%%i","%%j")>"%outfile%"
del "%tfile%"
type "%outfile%"
Gruss!