XMLStarlet Anweisung in For Schleife Verwenden
Hallo,
ich würde gerne die Ausgabe die ich mittels xmlstarlet mit einer Batch Datei erzeuge in einer Variable speicher damit ich diese nachher
mit anderen Werten vergleich kann.
Das liefert mir das was ich mir vorstelle
In der Variable test steht der 8 stellige Inhalt.
Allerdings hat die xml Datei einen Namespace und wenn ich diesen in der xmlstarlet Anweisung verwende habe ich ein = Zeichen
welches nicht erlaubt ist oder?
Der folgende Aufruf Funktioniert dann auch nicht mehr!
Vielleicht kann mir ja jemand weiter helfen.
Vielen Dank
Gruß eldorado
ich würde gerne die Ausgabe die ich mittels xmlstarlet mit einer Batch Datei erzeuge in einer Variable speicher damit ich diese nachher
mit anderen Werten vergleich kann.
for /f %%i in ('xml sel -T -t -m %baum% -v "Wert" %quelle%') do Set test=%%i
Das liefert mir das was ich mir vorstelle
In der Variable test steht der 8 stellige Inhalt.
Allerdings hat die xml Datei einen Namespace und wenn ich diesen in der xmlstarlet Anweisung verwende habe ich ein = Zeichen
welches nicht erlaubt ist oder?
Der folgende Aufruf Funktioniert dann auch nicht mehr!
for /f %%i in ('xml sel -N ns="namespace" -T -t -m %baum% -v "ns:Wert" %quelle%') do Set test=%%i
Vielleicht kann mir ja jemand weiter helfen.
Vielen Dank
Gruß eldorado
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 280443
Url: https://administrator.de/forum/xmlstarlet-anweisung-in-for-schleife-verwenden-280443.html
Ausgedruckt am: 23.12.2024 um 16:12 Uhr
10 Kommentare
Neuester Kommentar
Moin,
bestimmte Sonderzeichen wie das Gleichheitszeichen etc. unter anderem auch (
Also dem Sonderzeichen ein ^ voranstellen
Gruß jodel32
bestimmte Sonderzeichen wie das Gleichheitszeichen etc. unter anderem auch (
| < > & ( )
) musst du in der FOR Anweisung so "escapen"Also dem Sonderzeichen ein ^ voranstellen
^=
die eckigen Klammern und das @ würde ich auch mal escapen...die Liste der Sonderzeichen oben war nicht komplett ...
in nicht nur eines der Sonderzeichen escapen sondern alle Vorkommen
in nicht nur eines der Sonderzeichen escapen sondern alle Vorkommen
Ach so habe dein Posting da gerade missinterpretiert...dachte du gibst das direkt in den For Loop ein..
Nee die Sonderzeichen musst du nur escapen wenn sie direkt im Körper des For-Loops angegeben werden ...
Probiers mal so
und dann die Baum-Variable im For-Loop verwenden. Kanns gerade nicht testen, bin auf dem Phone... sollte aber laufen
Nee die Sonderzeichen musst du nur escapen wenn sie direkt im Körper des For-Loops angegeben werden ...
Probiers mal so
set "baum=/ns:a/ns:b[@atr='ab_1']/ns:c/ns:d"
Ich kenne das XML-Tool jetzt nicht, aber ich vermute die Namespace-Angabe ist hier eventuell nicht deklariert.
Wenn man wüsste wie dein XML-Tree aussieht und was du dort filtern willst könnte man dir eventuell weiterhelfen.
-edit- habe das hier gerade mal ausprobiert und funktioniert hier einwandfrei, da muss deine XPATH Query irgendwie keine Ausgabe erzeugen ...
Mein Test hatte folgende XML Datei:
und mein dazugehörger Batchcode:
Wenn man wüsste wie dein XML-Tree aussieht und was du dort filtern willst könnte man dir eventuell weiterhelfen.
-edit- habe das hier gerade mal ausprobiert und funktioniert hier einwandfrei, da muss deine XPATH Query irgendwie keine Ausgabe erzeugen ...
Mein Test hatte folgende XML Datei:
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:ns="http://test.local">
<ns:test name="testattribut">
<ns:mynode>Test 1</ns:mynode>
<ns:mynode>Test 2</ns:mynode>
</ns:test>
</root>
@echo off & setlocal enabledelayedexpansion
set "query=/root/ns:test[@name='testattribut']"
for /f "tokens=* delims=" %%a in ('xml sel -t -m "%query%" -v "ns:mynode" "C:\test.xml"') DO @(
set "wert=%%a"
echo !wert!
)
Zitat von @eldorado1:
Also deine Lösung war richtig musste nur die - " - bei - baum="/... - nach dem - = - Zeichen setzen und nicht davor
- "baum=/... -
Wenn du im Schleifenkörper um die Variable "%Baum%" die Anführungszeichen gesetzt hättest wäre es auf das selbe herausgekommen Also deine Lösung war richtig musste nur die - " - bei - baum="/... - nach dem - = - Zeichen setzen und nicht davor
- "baum=/... -
Hätte gleich noch eine Frage :|
Kann ich in einer If Anweisung das genau so machen??
Also so:
if ('xml sel...')== Ausdruck?
Nein, speichere mit der For-Schleife deinen Wert in einer Variablen und vergleiche dann die Variablen.Kann ich in einer If Anweisung das genau so machen??
Also so:
if ('xml sel...')== Ausdruck?
Ps: Wie kann ich meine Quellcode als solchen formatieren? Dann werden die Beiträge besser lesbar
Guckst du in die FAQ Formatierungen in den BeiträgenGruß jodel