Parse XML-Datei mit dem windows-batch
Wie kann ich extrahieren einen STRING wie "US_NY" zwischen den tags <LOCATION></LOCATION>
aus einer XML-Datei? Ich versuchte es mit FINDSTR, aber die Zeilenumbrüche sind problematisch.
<?xml version="1.0" encoding="utf-16"?>
<DEVICE>
<AGENT>
<VERSION>
2.0.0.2
</VERSION>
<CONNECTION>
<LOCATION>
US_NY
</LOCATION>
<SERVERIP>
127.0.0.1
</SERVERIP>
<TCPPORT>
5656
</TCPPORT>
<POLLINTERVAL>
5
</POLLINTERVAL>
</CONNECTION>
</AGENT>
</DEVICE>
- Was ist die Logik zum bestimmen, was muss extrahiert werden?
- Ich möchte die Standorte von somde Geräte. Diese Informationen werden in verschiedenen XML-Dateien. Somit Brauch ich zu extrahieren, den STRING oder die Linie zwischen den xml-Tags
<location>
und</location>
. Dies sollte mit windows-batch-Skript. - möglich, Duplikat der Eine batch-Datei zu extrahieren Sie den Wert eines bestimmten XML-tag
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer mehr
xmlFile
zugeordnet ist, den Namen der Datei als argument übergeben wird, um die batch-Datei. Also, ja, es ist der name der Datei.findstr
hat ein großes problem, denn es wird der Befehl verlassen Sie sich auf die xml-Datei zu formatieren. Wenn Sie mehrere tags auf der gleichen Linie es nicht mit dem Muster!!Sollten Sie verwenden XML.EXE innerhalb des batch-zum Lesen einer XML-Datei. Für weitere Informationen gehen Sie zu http://xmlstar.sourceforge.net/
Batch-Datei:
Ausgabe:
Wenn Sie möchten, verwenden Sie einen Helfer batch-Datei (von aacini) dann funktioniert das:
Diese wird eine helper-batch-Datei namens
findrepl.bat
aus - https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.batOrt
findrepl.bat
im gleichen Ordner wie die batch-Datei.Hier ist die xpath.bat -kleines Skript, das dir erlaubt, einen xml-Knoten/Attribut Wert durch xpath-Ausdruck ohne Verwendung von externen binaries.
Für Ihren Fall es kann z.B. so verwendet werden:
oder weisen Sie den Wert einer Variablen:
Reinen batch-Lösung
Ersetzen
some.xml
mit dem Namen Ihrer xml.Reinen batch -
wo q19722041.xml ist Ihre Quelle
.xml
Datei.Versuchen Sie dies:
Hinweis: die Antwort ist eine Anpassung der Antwort (wahrscheinlich von @Aacini) in diesem forum posten: Windows-batch-FindStr nach einer Zeichenfolge suchen und die entsprechende Zeile.
sed für Windows
in einer batch-Datei: