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

Bestimmten Bereich aus XML auslesen und Werte in anderer Reihenfolge ausgeben

Mitglied: flusenhirn

flusenhirn (Level 1) - Jetzt verbinden

18.04.2008, aktualisiert 19.04.2008, 5740 Aufrufe, 1 Kommentar

Hallo Leute,
ich hab zwar versucht, mein Problem durch Google, Studienkollegen sowie Try & Error selbst zu lösen... komme irgendwie aber (trotz der echt genialen Hilfen hier) absolut nicht weiter... hab leider bisher auch kaum was mit Batch gemacht!

Ich habe eine XML die gekürzt so aussieht:

<Directory Name="Hauptverzeichnis">
<Directory Name="Unterverzeichnis1">
<File Name="datei1" Size="551118" TTH="12345"/>
<File Name="datei2" Size="524951" TTH="54321"/>
<Directory Name="Unterunterverzeichnis1">
<File Name="datei1" ...
</Directory>
</Directory>
<Directory Name="Unterverzeichnis2">
<Directory Name="Unterunterverzeichnis1">
<File Name="datei1" ...
</Directory>
<Directory Name="Unterunterverzeichnis2">
<File Name="datei1" ...
</Directory>
<File Name="datei1" ...
</Directory>
</Directory>

Von dieser Xml möchte ich alle Einträge (File, Size, TTH) aus Unterverzeichnis2 (& dessen Unterverzeichnissen) auslesen und diese dann in einer txt abspeichern.
Wobei in der txt zwischen den drei Werten noch jeweils Text eingefügt werden soll (z.B. blablaTTHblablaNAME bla Size)

Aufgrund meiner bisherigen Programmierkenntnisse versuche ich z.Z. diesen Grundgedanken umzusetzen...:

set XMLDATEI=liste.xml
set zähler1=0
set zähler2=1
für jede Zeile in (%XMLDATEI%) do (
wenn zähler1=1 do (
wenn in Zeile "<File Name=" do (
Name, Size, TTH auslesen & echo als text-Name-text-TTH-text-Size >> neu.txt
)
wenn in Zeile "<Directory Name=" set zähler2=+1
wenn in Zeile "</Directory>" set zähler2=-1
wenn zähler2=0 set zähler1=0
)
wenn in Zeile "<Directory Name="Unterverzeichnis2">" set zähler1=1
)

...wäre das in der Art überhaupt möglich über Batch oder lieg ich hier schon im Ansatz falsch?

Hoffe habe einigermassen Verständlich mein Problem schildern können & hoffe ihr könnt
mir evtl. helfen bzw. mir nen guten Lösung-/Denkansatz geben...
vielen Dank schonma!

gruß,
flusen
Mitglied: bastla
19.04.2008, aktualisiert 28.05.2013
Hallo flusenhirn und willkommen im Forum!

...wäre das in der Art überhaupt möglich über Batch oder lieg ich hier schon im Ansatz falsch?
Ein klares "Jein" dazu (zu beiden Teilen der Fage) .

Eine Umsetzung in Batch wäre zwar grundsätzlich möglich, aber wegen der in der Datei enthaltenen "<", ">" und Anführungszeichen eher mühsam.

Zum Algorithmus: Mit "Zähler2=1" zu beginnen, wird es (soferne die <Directory>- und </Directory>-Tags ordnungsgemäß paarweise gesetzt sind), unmöglich machen, dass der Zähler2 jemals 0 wird (bereits beim Auswerten der ersten Zeile erhöht sich der Zähler auf 2) ...

Mein Ansatz wäre, solange das gewünschte Unterverzeichnis nicht gefunden wurde, die Verzeichnisebenen gar nicht zu zählen, und dann auch zunächst von 0 auszugehen (das gesuchte "Unterverzeichnis2" erhöht dann den Zähler ohnehin schon auf 1, und beim Ende dieses Verzeichnis-Blocks wird dann wieder 0 erreicht).

Aufgrund des besseren Handlings von Sonderzeichen im Text würde ich zu VBScript greifen und hätte folgenden Entwurf anzubieten:
01.
'ExtractFromXMLDirList.vbs 
02.
XMLDatei = "liste.xml" 
03.
NeuDatei = "neu.txt" 
04.
Verz = "Unterverzeichnis2" 
05.
Text = "blabla" 
06.
 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
Zeilen = Split(fso.OpenTextFile(XMLDatei).ReadAll, vbCrLF) 
09.
 
10.
Set Neu = fso.CreateTextFile(NeuDatei, True) 
11.
 
12.
Z1 = 0 
13.
For Each Zeile In Zeilen 
14.
	If InStr(Zeile, Verz) Then 
15.
                Z1 = 1 
16.
                Z2 = 0 
17.
        End If 
18.
	If Z1 = 1 Then 
19.
		If InStr(Zeile, "<File Name=") Then 
20.
			Felder = Split(Zeile, """") 
21.
			Neu.WriteLine Text & "-" & Felder(1) & _ 
22.
				"-" & Text & "-" & Felder(5) & _ 
23.
				"-" & Text & "-" & Felder(3) 
24.
		End If 
25.
		If InStr(Zeile, "<Directory Name=") Then Z2 = Z2 + 1 
26.
		If InStr(Zeile, "</Directory>") Then Z2 = Z2 - 1 
27.
		If Z2 = 0 Then Exit For 
28.
	End If 
29.
Next 
30.
Neu.Close
Ein weiterer (kleiner) Vorteil von VBS gegenüber Batch ist, dass eine Schleife auch vorzeitig verlassen werden kann, was ich am Ende des "Unterverzeichnis2"-Blocks (wenn Z2 wieder 0 wird) auch nutze.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell bestimmtes XML Element auslesen

gelöst Frage von H41mSh1C0RBatch & Shell6 Kommentare

Hi@PS Profi's, Ein Entry ist wiefolgt aufgebaut: Wenn ich nun im Datagrid mir eine Zeile aussuche will ich mir ...

Microsoft Office

Excel Liste nach einem bestimmten Wert durchsuchen und dann einen bestimmten Wert ausgeben

gelöst Frage von michael1306Microsoft Office8 Kommentare

Hallo zusammen, zu meinem kleinen Problem. Ich habe eine Excel Tabelle die mit Daten gefüllt ist nur fehlen mir ...

Batch & Shell

Bestimmten Bereich einer Textdatei ausgeben mittels Batch

gelöst Frage von Django.DuranoBatch & Shell10 Kommentare

Hallo, gibt es eine Möglichkeit eine Textdatei mittels Batch zu durchsuchen und einen bestimmten Teil davon dann aber nur ...

XML

Einlesen bestimmten Werten, Texten aus XML- Datei in EXCEL

gelöst Frage von EverestXML11 Kommentare

Hallo Experten, ich möchte in Excel die Werte/Texte aus einer XML-Datei direkt lesen ohne sie zu importieren. Kann jemand ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 2 TagenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 2 TagenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 3 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein interessanter Beitrag dazu: Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10 Anscheinend ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 3 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1015 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL14 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)11 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs11 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...