Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst XMLStarlet Anweisung in For Schleife Verwenden

Mitglied: eldorado1

eldorado1 (Level 1) - Jetzt verbinden

17.08.2015, aktualisiert 18.08.2015, 764 Aufrufe, 10 Kommentare

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.

01.
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!

01.
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
Mitglied: 114757
LÖSUNG 17.08.2015, aktualisiert um 16:11 Uhr
Moin,
bestimmte Sonderzeichen wie das Gleichheitszeichen etc. unter anderem auch ( | < > & ( ) ) musst du in der FOR Anweisung so "escapen"
Also dem Sonderzeichen ein ^ voranstellen
^=
Gruß jodel32
Bitte warten ..
Mitglied: eldorado1
17.08.2015, aktualisiert 18.08.2015
Hallo jodel32,

danke für deine schnelle Antwort
Hat super funktioniert

habe aber noch etwas :|

mein %baum% sie jetzt so aus
01.
set baum=/ns:a/ns:b/ns:c/ns:d
jetzt würde ich gerne noch ein Attribut, wie folgt, mit einbauen.

01.
set baum=/ns:a/ns:b[@atr^="ab_1"]/ns:c/ns:d
aber das funktioniert leider auch nicht
Bitte warten ..
Mitglied: 114757
17.08.2015, aktualisiert um 16:20 Uhr
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
Bitte warten ..
Mitglied: eldorado1
17.08.2015 um 16:23 Uhr
Habe ich mir gedacht und schon ausprobiert - leider ohne Erfolg
Bitte warten ..
Mitglied: 114757
17.08.2015, aktualisiert um 16:37 Uhr
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
set "baum=/ns:a/ns:b[@atr='ab_1']/ns:c/ns:d"
und dann die Baum-Variable im For-Loop verwenden. Kanns gerade nicht testen, bin auf dem Phone... sollte aber laufen
Bitte warten ..
Mitglied: eldorado1
17.08.2015 um 16:37 Uhr
Kein Problem.

Hat leider auch zu keiner Ausgabe geführt.

auch wenn ich die Struktur direkt - also anstelle von %baum% - eingebe, erhalte ich keine Ausgabe.
Bitte warten ..
Mitglied: 114757
17.08.2015, aktualisiert um 17:23 Uhr
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:
01.
<?xml version="1.0" encoding="utf-8"?>
02.
<root xmlns:ns="http://test.local">
03.
	<ns:test name="testattribut">
04.
		<ns:mynode>Test 1</ns:mynode>
05.
		<ns:mynode>Test 2</ns:mynode>
06.
	</ns:test>
07.
</root>
und mein dazugehörger Batchcode:
01.
@echo off & setlocal enabledelayedexpansion
02.
set "query=/root/ns:test[@name='testattribut']"
03.
for /f "tokens=* delims=" %%a in ('xml sel -t -m "%query%" -v "ns:mynode" "C:\test.xml"') DO @(
04.
    set "wert=%%a"
05.
    echo !wert!
06.
)
Bitte warten ..
Mitglied: eldorado1
18.08.2015, aktualisiert um 13:21 Uhr
Hallo und nochmal Vielen Dank für deine Mühe

habe es auch hinbekommen. Meine Lösung:
01.
set baum="/ns:a/ns:b[@atr='ab_1']/ns:c/ns:d"
02.

03.
for /f %%i in ('xml sel -N ns^="namespace" -T -t -m %baum% -v "ns:Wert" -n %quelle%') do (...)
Habe dann immer gleich %%i für die abfrage genommen in der Schleife.
Wenn ich innerhalb der Schleife %%i einer Variable zugewiesen habe, hat diese mir komischer weise immer einen falschen Wert zugewiesen der nicht
identisch mit %%i war.

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?

Gruß eldorado

Ps: Wie kann ich meine Quellcode als solchen formatieren? Dann werden die Beiträge besser lesbar
Bitte warten ..
Mitglied: 114757
18.08.2015, aktualisiert um 10:17 Uhr
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
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.
Ps: Wie kann ich meine Quellcode als solchen formatieren? Dann werden die Beiträge besser lesbar
Guckst du in die FAQ https://www.administrator.de/faq/20#toc-27

Gruß jodel
Bitte warten ..
Mitglied: eldorado1
18.08.2015 um 13:23 Uhr
Danke

Habe es auch nochmal mit einer For-Schleife gemacht ;)

Gruß eldorado
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Unix Shell-Script: IF-Anweisung
gelöst Frage von newit1Batch & Shell6 Kommentare

Hallo zusammen, kann ich mit einer IF-Anweisung prüfen, ob in einer lokalen CSV-Datei in der ersten Spalte überall eine ...

Batch & Shell

Batch will start Anweisung nicht ausführen

gelöst Frage von zeroblue2005Batch & Shell7 Kommentare

Hallo Zusammen, ich brauche mal Hilfe. Ich habe hier die Batch vom Programm ApcUPS die eine USV steuert! Das ...

PHP

Den Inhalt einer "get"-Anweisung finden, wie

Frage von sbsnewbiePHP2 Kommentare

Moin Leude, könnt Ihr mir mal kurz auf die Sprünge helfen? Wie kann ich den Inhalt einer "get"-Anweisung finden? ...

Datenbanken

Hilfe bei MSSQL-Anweisung, Werte in andere Tabelle einfügen

gelöst Frage von d4shoerncheNDatenbanken8 Kommentare

Guten Morgen, ich bräuchte einmal Eure Hilfe in Bezug auf MSSQL. Und zwar habe ich eine Tabelle Namens " meineDB . dbo . tdAddresses " ...

Neue Wissensbeiträge
Google Android

Heise: Google sperrt Android-Updates und den Play Store für Huawei

Information von Deepsys vor 6 StundenGoogle Android4 Kommentare

Das finde ich schon ein starkes Stück, Trump der Welt Diktator. So kann man mit einem Dekret mal eben ...

Windows 7

Südkoreas Regierung setzt auf Linux, um Windows 7 Clients abzulösen

Information von kgborn vor 17 StundenWindows 74 Kommentare

Kleiner Infosplitter zum Wochenanfang: Während München (LiMux) und die niedersächsische Finanzverwaltung von Linux auf einen Windows 10-Client (und Office) ...

Internet
Big Brother is Watching You
Information von transocean vor 1 TagInternet1 Kommentar

Moin, die Datenkrake Google fischt Informationen über Einkäufe ab, die GMail Nutzer im Netz tätigen. Gruß Uwe

Datenschutz
TeamViewer gehackt !
Information von aqui vor 1 TagDatenschutz7 Kommentare

Hat schon einen Grund warum verantwortungsvolle Admins diese Software nicht einsetzen und sie in den meisten größeren Firmen aus ...

Heiß diskutierte Inhalte
Linux Userverwaltung
Ist sudo auf Servern Pflicht?
gelöst Frage von lcer00Linux Userverwaltung12 Kommentare

Hallo zusammen, wir haben für einige Netzwerkdienste einige Debian Server. Auf diesen Servern arbeiten keine Benutzer im eigentlichen sinne. ...

Batch & Shell
Powershell Datum der zuletzt eingespielten Patche bei remote Servern ermitteln
Frage von bensonhedgesBatch & Shell12 Kommentare

Hallo, ich möchte gerne anhand einer Serverliste (bsp. computers.txt) via PS ermitteln, wann derjeweilige Server zuletzt gepatcht wurde (Liste ...

Humor (lol)
Mitarbeiter meldet: VPN funktioniert nicht
Frage von Epixc0reHumor (lol)11 Kommentare

Servus, einer unserer Mitarbeiter meldete heute, sein VPN funktioniert Zuhause nicht, im LTE Netz aber schon. Per Teamviewer hin ...

Netzwerkgrundlagen
Netzwerk IP Kamera nur an einem Rechner sichtbar
Frage von Lutz-ReNetzwerkgrundlagen9 Kommentare

Guten Abend Ich hab in einem IP 4 Netzwerk mit gleichen Subnetz zwei Kameras mit festen IP Adresse und ...