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

Frage Entwicklung Batch & Shell

GELÖST

XML nach bestimmten Feldern auslesen und in CSV exportieren

Mitglied: nulpen

nulpen (Level 1) - Jetzt verbinden

14.12.2010, aktualisiert 13:10 Uhr, 7888 Aufrufe, 5 Kommentare

Hallo zusammen,

ich habe verschiedene TIPPS zur Umwandlung und auslesen hier im Forum schon durchgestöbert aber noch nichts zu meiner XML-Struktur gefunden

Folgende XML-Struktur (Auszüge)

<Fields>
<Field Name="TimeStamp">
2010-12-09 08:52:28
</Field>
<Field Name="GUID">
86A8B71C-FE16-4DF5-B501-33C5498966C1
</Field>
<Field Name="DOC-GUID">
21E946FE-9B10-49FF-9A8A-E2C8A02C6BF2
</Field>
<Field Name="Personalnummer_Eingabefeld">
00002
</Field>
<Field Name="Vorname_Eingabefeld">
Mark
</Field>

Diese Blöcke kommen in der XML-Datei mehrfach vor und ich möchte jetzt ausgewählte Felder in eine CSV/TXT-Datei bekommen.

Nehmen wir an die Felder GUID und Personalnummer_Eingabefeld würden benötigt

Alles was ich dankenswerterweise bisher hier gefunden habe geht von

<FELD1>Test</FELD1>
<FELD2>Test</FELD2>

Strukturen aus.

Idealzustand wäre jetzt eine CSV mit folgenden Inhalten

Zeile 1 "GUID","Personalnummer_Eingabefeld"
Zeile 2 "86A8B71C-FE16-4DF5-B501-33C5498966C1","00002"
Zeile 3 usw. die nächsten gefundenen Werte

Wahscheinlich würde schon eine XSL-Datei ausreichen ?

Danke für die Hilfe

Ralf
Mitglied: pieh-ejdsch
14.12.2010 um 19:15 Uhr
moin Ralf,

im Moment ist weder der genaue Aufbau Deiner XML, noch der CSV bekannt.

in Zeile 1 der CSV sollen die Werte aus </Field Name="INHALT"> nacheinander eingetragen werden. Zeile 1 ist aber nach dem zweiten Eintrag schon voll.
in Zeile 2 der CSV sollen die Werte jeweils eine Zeile nach </Field Name="INHALT"> nacheinander eingetragen werden - und ist auch nach dem zweiten Eintrag schon voll.

was soll dann in Zeile 3 stehen? </Field>

so wie Du den Aufbau der CSV Beschreibst, ist in Zeile 1 der nächste </Field Name="INHALT ..."> einzufügen oder wie?

Gruß Phil
Bitte warten ..
Mitglied: nulpen
14.12.2010 um 21:36 Uhr
Hallo Phil,

da ich die Daten später mit Excel weiterverarbeiten werde könnte ich sogar auf die "Überschriften" verzichten.

Genau diese sind mein Problem, wann immer ich mit XML zu tun habe und hier und auch bei Google nach
Hilfe gesucht habe wird von den TAGS ausgangen wie ich Sie als Muster aufgeführt habe.

Konkret brauche ich den Wert der zwischen

<Field Name="GUID">
und </Field> steht (in diesem Fall 86A8B71C-FE16-4DF5-B501-33C5498966C1)

GUID wäre dann die spätere Spaltenbezeichnung.

Ich kann ein bischen was mit regulären Ausdrücken möchte die Sache aber automatisiert als Batch ablaufen lassen.

Da diese Gruppe an TAGS (und noch mehr) mehrfach in der XML vorkommen dachte ich umgangsprachlich an folgendes:

"Suche in der XML-Datei bis Du "Field Name=GUID" + Field Name="Personalnummer_Eingabe" usw findest und schreibe
die jeweils nachfolgenden Werte in eine Zeile einer Textdatei mit ";" getrennt.
Sobald Du beim nächsten "Field Name=GUID" ankommst beginnst Du eine neue Zeile und schreibst die nächsten Werte in eine
neue Zeile."

Wie gesagt es gibt hierfür Lösungen im Netz die aber immer nur nach dem Wert zwischen <FELD1> und <\Feld> suchen und diesen auch finden.

Mein Problem ist daß mein Anfangswert <FELD1 Name="xyz"> heißt und dann erst der Wert kommt den ich brauche.

Welceh Systax brauche ich um an diesen Tag und den nachfolgenden Wert zu kommen.

Danke für Deine Antwort


Ralf
Bitte warten ..
Mitglied: Connor1980
16.12.2010 um 13:16 Uhr
Hallo Ralf,

einfacher wäre es, wenn die Felder nochmal in Node gruppiert wären, dann könntest du das nach diesem Beispiel erledigen.

Grüße
Bitte warten ..
Mitglied: pieh-ejdsch
16.12.2010 um 22:19 Uhr
moin Ralf,

hier ist das Script welches Deine Aufgabe löst.

du kannst die Batch auch mit einem Parameter, welcher die XML-Datei ist aufrufen oder in der Batch den Namen angeben.
die csv wird im gleichen Verzeichnis erzeugt.

wenn Du mehr Kopfdaten als 9 hast must Du die Nummerierung mit Kopfdaten01-Kopfdaten99 machen.

01.
@echo off&setlocal 
02.
 
03.
REM "Suche in der XML-Datei bis Du "Field Name=GUID" + Field Name="Personalnummer_Eingabe" usw findest und schreibe die jeweils nachfolgenden Werte in eine Zeile einer Textdatei mit ";" getrennt. Sobald Du beim nächsten "Field Name=GUID" ankommst beginnst Du eine neue Zeile und schreibst die nächsten Werte in eine neue Zeile." 
04.
 
05.
:: XML-Datei angeben oder als ersten parameter der Batch uebergeben 
06.
set "XML-Name=%~1" 
07.
if not defined XML-Name set "XML-Name=D:\Adminhelp\XML-test.XML" 
08.
 
09.
set KopfDaten1="GUID" 
10.
set KopfDaten2="Personalnummer_Eingabefeld" 
11.
::mehr Kopfdaten mit: set Kopfdaten3=... 
12.
 
13.
::Ueberschrift ausblenden: set "Ueberschrift=" 
14.
set "Ueberschrift=1" 
15.
 
16.
set "DatenLesenVorn=<Field Name=" 
17.
set "DatenLesenHinten=>" 
18.
 
19.
set "EndeDatenLesen=</Field>" 
20.
 
21.
 
22.
if defined Ueberschrift ( 
23.
	set "Ueberschrift=" 
24.
	for /f "tokens=1* delims==" %%i in ('set Kopfdaten') do ( 
25.
		if defined Ueberschrift (setlocal enabledelayedexpansion 
26.
			for /f "delims=" %%k in ("!Ueberschrift!") do endlocal&set "Ueberschrift=%%k,%%j" 
27.
		) else set "Ueberschrift=%%j" 
28.
)	) 
29.
 
30.
31.
type "%XML-Name%" 
32.
setlocal enabledelayedexpansion 
33.
echo. 
34.
echo.!DatenLesenVorn!!KopfDaten1!!DatenLesenHinten! 
35.
endlocal 
36.
)>"%temp%\XML" 
37.
 
38.
39.
for /f "usebackq delims=" %%a in ("%temp%\XML") do ( 
40.
	for /f "tokens=1* delims==" %%b in ('set KopfDaten') do ( 
41.
		setlocal EnableDelayedExpansion 
42.
		Rem wenn KopfZeile gesetzt und gefunden dann zeige Ergebnis der Zeile 
43.
		if "%DatenLesenVorn%!Zeigen!%DatenLesenHinten%" == "%%a" ( 
44.
			if defined Line ( 
45.
				if defined Ueberschrift echo.!Ueberschrift! 
46.
				echo.!Line! 
47.
48.
			endlocal 
49.
			if defined Line set "Ueberschrift=" 
50.
			set "Line=" 
51.
		) else endlocal 
52.
		if "%DatenLesenVorn%%Kopfdaten1%%DatenLesenHinten%" == "%%a" if not defined Zeigen set "Zeigen=%Kopfdaten1%" 
53.
		if "%EndeDatenLesen%" == "%%a" set "Lesen=" 
54.
		setlocal enabledelayedexpansion 
55.
		if "!Lesen!" == "%%c" ( 
56.
			endlocal 
57.
			if defined Line ( 
58.
				setlocal enabledelayedexpansion 
59.
				for /f "delims=" %%d in ("!Line!") do endlocal&set "Line=%%d;%%a" 
60.
			) else set "Line=%%a" 
61.
		) else endlocal 
62.
		if "%DatenLesenVorn%%%c%DatenLesenHinten%" == "%%a" set "Lesen=%%c" 
63.
)	) 
64.
)>%XML-Name:~0,-4%.csv 
65.
del "%temp%\XML"
Gruß Phil
Bitte warten ..
Mitglied: nulpen
18.01.2011 um 22:26 Uhr
Hallo Phil,

Danke, das war es !!!!!!!

Ich war bis 10.01. an anderen Dingen dran deshalb erst jetzt die Antwort

!!!!
Super
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Auslesen bestimmter Spalten aus csv
gelöst Frage von Berti82Batch & Shell6 Kommentare

Hallo, Ich bekomme regelmäßig csv-Dateien mit ca. 77 Spalten und prinzipiell unbegrenzten Zeilen. Diese muss ich eindampfen auf 5 ...

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

Batch & Shell
XML in CSV umwandeln
gelöst Frage von jochengBatch & Shell2 Kommentare

Hallo Leute Ich habe folgende XML Datei die ich mit einem Batch in eine CSV umwandeln will. Mein Problem ...

Batch & Shell
Powershell xml zu csv
gelöst Frage von GeoSemBatch & Shell2 Kommentare

Hallo Dank einem Beitrag bin ich weiter gekommen ;-) Leider habe ich mit powershell keine Erfahrung - so habe ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...