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 Bestimmten Teil eines String aus einer XML-Datei auslesen

Mitglied: Dnis822

Dnis822 (Level 1) - Jetzt verbinden

23.09.2015, aktualisiert 24.09.2015, 934 Aufrufe, 13 Kommentare, 3 Danke

Hallo zusammen,

ich stehe vor folgendem Problem:

Ich habe eine XML-Datei die bspw. so aussieht:

...
<Url1>http://test:8080/Name/Version/...</Url1>"
<Directory>C:\MeinVerzeichnis\test\..</Directory>
...

'Name' und 'Mein Verzeichnis' sind dabei variabel und können jedesmal unterschiedlich sein.
Das bedeutet ich muss den String ab"test:8080/" bis "/Version" auslesen.

Das bekomme ich leider nicht hin.

Gibt es die Möglichkeit das mit einem Batch-Script hinzubekommen?
Für Lösungsvorschläge wäre ich sehr dankbar.

Gruß

Mitglied: 114757
23.09.2015, aktualisiert um 16:53 Uhr
Moin,
kein Problem mit einem "Hauch" Powershell in der Batch:
01.
@echo off
02.
set "file=C:\datei.xml"
03.
powershell -ExecutionPolicy ByPass -Command "([xml](gc '%file%')).GetElementsByTagName('Url1')[0].InnerText.split('/')[3]"
Oder noch kürzer mit sed:
01.
sed -nr 's/.*8080\/([^\/]*).*/\1/p' Datei.xml
Gruß jodel32
Bitte warten ..
Mitglied: Dnis822
23.09.2015, aktualisiert um 16:57 Uhr
Vielen Dank schoneinmal!

Gibt es auch eine Möglichkeit ohne Powershell zu nutzen oder ohne sonstige Erweiterungen?

Habe ein etwas größeres Batch-Script und würde dieses gerne behalten und erweitern.
Bitte warten ..
Mitglied: 114757
23.09.2015, aktualisiert um 17:08 Uhr
Habe ein etwas größeres Batch-Script und würde dieses gerne behalten und erweitern.
Kannst du ja auch das da oben ist ja eine Batch ... naja hier noch eine mögliche pure Batch Old-School Variante:
01.
@echo off
02.
for /f "tokens=3 delims=/" %%a in ('findstr /ic:"test:8080" "C:\demo.xml"') DO @echo %%a
Das geht aber nur wenn das keine UTF-8 Datei oder sonstiger exotischer Kram ist ...
Bitte warten ..
Mitglied: Dnis822
23.09.2015 um 17:15 Uhr
Vielen Dank!

Die Datei ist UTF-8 kodiert.
Ist das ein Problem?

Und eine Frage zu der Lösung:
tokens=3 delims=/ sagt dem Script das der Wert nach dem dritten / genommen werden soll, versteh ich das richtig?
Wofür steht dann das ic:test:8080 und woher weiß das Script das es beim nächsten / wieder aufhört?

Gruß
Bitte warten ..
Mitglied: Dnis822
23.09.2015, aktualisiert um 17:33 Uhr
Okay das mit dem ic habe ich verstanden, das Script sucht eine Zeile in dem der String vorkommt.
Ansonsten scheint das auch zu funktionieren.

Wenn allerdings bei diesem Beispiel:

<Url1>http://test:8080/Name/Version/...</Url1>"

der Name ebenfalls einen / enhält -> http://test:8080/Das/ist/der/Name/Version/...

kann ich nicht mehr anhand der / trennen sondern möchte ab dem "/test:8080/" bis "/Version" trennen.
ist das auch möglich?

Sonst habe ich erstmal kein Problem mit der UTF-8 kodierung gefunden
Bitte warten ..
Mitglied: 114757
23.09.2015, aktualisiert um 18:06 Uhr
kann ich nicht mehr anhand der / trennen sondern möchte ab dem "/test:8080/" bis "/Version" trennen.
ist das auch möglich?
01.
@echo off & setlocal enabledelayedexpansion
02.
for /f "tokens=2 delims=^>^<" %%a in ('findstr /ic:"test:8080" "C:\demo.xml"') DO @(
03.
	set "name=%%a"
04.
	set "name=!name:http://test:8080/=!"
05.
	set "name=!name:/Version/=|!"
06.
	for /f "tokens=1 delims=|" %%b in ("!name!") DO @echo %%b
07.
)
Sons' noch nen Wunsch ?

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen.

Gruß jodel32
Bitte warten ..
Mitglied: Dnis822
24.09.2015 um 08:59 Uhr
Vielen Dank für Deine Mühe!

Das funktioniert leider nicht ganz bei mir.
Als Ausgabe erhalte ich !name!.

Könntest du mir den Code-Schnipsel etwas erläutern?
Bitte warten ..
Mitglied: 114757
24.09.2015, aktualisiert um 09:07 Uhr
Zitat von Dnis822:

Vielen Dank für Deine Mühe!

Das funktioniert leider nicht ganz bei mir.
Als Ausgabe erhalte ich !name!.
Dann hast du vergessen "delayed expansion" zu aktivieren und meine erste Zeile nicht richtig übernommen !
@echo off & setlocal enabledelayedexpansion 
Siehe dazu:http://ss64.com/nt/delayedexpansion.html

Und zur Variablen-Stringersetzung in Zeile 4 und 5 siehe:
http://www.dostips.com/DtTipsStringManipulation.php
Bitte warten ..
Mitglied: Dnis822
24.09.2015 um 09:33 Uhr
Super!
Das hat geholfen, danke!

Eine letzte Frage hätte ich noch.

Es funktioniert so:

<config>
<Url1>http://test:8080/Name/Version/...</Url1>"
</config>

Aber nicht so:

<config>
<Url1>http://test:8080/Name/Version/...</Url1>"
</config>

Das kann ich mir nicht erklären, wieso stören die Leerzeichen hierbei?
Bitte warten ..
Mitglied: Dnis822
24.09.2015, aktualisiert um 09:34 Uhr
Oh ich sehe gerade, die Leerzeichen werden hier nicht mit angezeigt,
nun muss man sich einmal einen Tab vor der 2.ten <Url1> vorstellen

Gruß
Bitte warten ..
Mitglied: 114757
24.09.2015, aktualisiert um 09:53 Uhr
Zitat von Dnis822:
Das kann ich mir nicht erklären, wieso stören die Leerzeichen hierbei?
Weil du diese dann ebenfalls in der ersten Schleife als Delimiter deklarieren musst. Ich sag ja, absolut wasserdicht bekommst du das nur mit Powershell / sed und Regular Expressions wie oben beschrieben hin ... Ihr Batchler bekommt hier halt die Quittung das ihr euch nicht weiterbildet ;-P und an der Krüppelsprache Batch hängen bleibt.
Bitte warten ..
Mitglied: Dnis822
24.09.2015 um 14:23 Uhr
Wie deklariere ich das richtig im Delimiter?
Finde da leider keine Beispiele zu und alle meine Versuche enden leider in einer Syntax Verletzung.

Vielen Dank aufjedenfall, im Prinzip tut es genau das was ich will nur die Formatierung der XML würde ich gerne behalten.

Gruß
Bitte warten ..
Mitglied: 114757
LÖSUNG 24.09.2015, aktualisiert um 15:52 Uhr
EInfach einen Tab in die Liste der delimiter einfügen:
01.
for /f "tokens=2 delims=^>^<	"
Bitte warten ..
Ähnliche Inhalte
XML

XML-Datei mit Powershell editieren, 3. Teil

gelöst Frage von Jensxx1975XML2 Kommentare

Hallo zusammen, ich brauche nochmal Hilfe. Geht um folgendes, das hier läuft: XML-Teil: das aber nicht: XML-Teil: Ich erkenne ...

XML

XML-Datei mit Powershell editieren, 2. Teil

gelöst Frage von Jensxx1975XML13 Kommentare

Hallo zusammen, habe hier aus dem Form eine Script-Zeile erhalten um ein XML-File zu editieren. Läuft wunderbar. Nun möchte ...

XML

XML-Datei mit Powershell editieren, 4. Teil

Frage von Jensxx1975XML1 Kommentar

Hallo nochmal, was kann ich denn in diesem Fall tun? Mit allem was ich bisher über X-Path gelernt habe ...

XML

XML Datei Fehler?

Frage von Patrick-ITXML1 Kommentar

Hallo zusammen ich benutze Sysprep, um ein Image von einer Maschine zu machen und lade dieses dann auf einem ...

Neue Wissensbeiträge
Administrator.de Feedback
Entwicklertagebuch: Die nächste Version
Information von admtech vor 10 StundenAdministrator.de Feedback4 Kommentare

Hallo Administrator User, vielleicht haben es einige User schon mitbekommen: Wir arbeiten aktuell an einer komplett neuen Version von ...

Windows Server

Active Directory ESE Version Store Changes in Server 2019

Information von Dani vor 4 TagenWindows Server

Moin, Last month at Microsoft Ignite, many exciting new features rolling out in Server 2019 were talked about. But ...

Exchange Server

Microsoft Extending End of Support for Exchange Server 2010

Information von Dani vor 4 TagenExchange Server4 Kommentare

Moin, After investigating and analyzing the deployment state of an extensive number of Exchange customers we have decided to ...

Schulung & Training

Humble Book Bundle: Network and Security Certification 2.0

Tipp von NetzwerkDude vor 4 TagenSchulung & Training

Abend, bei HumbleBundle gibts mal wider ein schönes Paket e-books: sind verschiedene Zertifizierungen wie MCSA, CCNA, CompTIA etc., für ...

Heiß diskutierte Inhalte
Visual Studio
Prüfen, ob Programm schon disposed wurde
Frage von MarcoBornVisual Studio17 Kommentare

Hallo Forum, ich habe in VB.NET ein Programm geschrieben, welches Word startet und dort Daten ausliest. Obwohl ich die ...

DNS
DNS Probleme nach Umstellung auf IPv6
Frage von thunderbird304DNS16 Kommentare

Hi Leute! Folgende Problematik: Umstieg von Glasfaser auf Telekom Buisiness DSL. Durch die Umstellung ist die FritzBox nun Gateway. ...

Netzwerkgrundlagen
Zukunftsicheres Heimnetzwerk aufbauen
Frage von CRO-WarriorNetzwerkgrundlagen15 Kommentare

Hallo Leute. Ich bin dabei das Haus in Kroatien zu renovieren. Da hab ich jetzt die Möglichkeit alles so ...

Speicherkarten
Multi USB Stick erstellen
Frage von Ghost108Speicherkarten15 Kommentare

Guten Morgen zusammen, ich würde gerne einen Multi USB Stick erstellen (bootmöglichkeit mehrer ISOs), welcher sowohl Legacy als auch ...