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

XML Datei auslesen mit Excel

Mitglied: kaiuwe28

kaiuwe28 (Level 1) - Jetzt verbinden

13.11.2017, aktualisiert 20:23 Uhr, 4081 Aufrufe, 10 Kommentare, 1 Danke

Hallo zusammen,

ich mal wieder...

Leider komme ich nicht weiter. Ich möchte aus einem Ordner mit mehreren XML Dateien alle Dateien auf bestimmte Werte durchsuchen und diese in einer Tabelle aufführen um daraus später eine Statistik zu erstellen.

Das Einlesen aller Dateien funktioniert, jedoch sind am Ende die Spalten nicht identisch, obwohl der Aufbau der XML aus meiner Sicht identisch ist.
Meine erste Idee war alles Einlesen und dann Bereinigen, das klappt jetzt aber nicht mehr wegen den unterschiedlichen Spalten.

Google hat mir einiges an Infos zum Auslesen von Knoten gebracht, aber aktuell steige ich da nicht hinter, wie das mit den Knoten in den XML Dateien funktioniert.

Folgendes Script lädt alle XML Dateien ein:


Die XML Datei ist wie folgt aufgebaut (hab mehrere verglichen) bzw. sieht wie folgt aus:


Kann mir einer sagen, wie ich einen Knoten bzw. Unterknoten abfrage?

Ich bräuchte z:B. folgende Werte:

InstdAmt, TxAmt, AmtCcy, Rsn und so weiter...


Edit:
Evtl. kann mir ja auch einer sagen, wie ich den Dateinamen in Spalte A bekomme.

Damit der Rest erst in Spalte B anfängt muss ich ja nur Destination:=.Range("A" auf Destination:=.Range("B" ändern.
Bekomme den f.Name aber leider nicht in Spalte A.


Vielen Dank schon einmal für Antworten
Mitglied: Volchy
14.11.2017 um 07:37 Uhr
Moin kaiuwe28,

schau dir mal den älteren Beitrag hier im Forum an.

LG
Volchy
Bitte warten ..
Mitglied: Pedant
14.11.2017 um 09:40 Uhr
Hallo kaiuwe28,

Das Einlesen aller Dateien funktioniert, jedoch sind am Ende die Spalten nicht identisch, obwohl der Aufbau der XML aus meiner Sicht identisch ist.

Ich habe mir Deine XML kopiert, um auszuprobieren, ob ich Deine Problemstellung nachvollziehen kann und vielleicht eine Lösung finde.

Das Ausprobieren scheiterte daran, dass Deine XLM syntaktisch fehlerhaft ist.

Folgende Tags werden geöffnet, aber nie geschlossen:
Ich habe die fehlenden </tags> nach Gutdünken hinzugefügt, aber beim Öffnen im Excel kam dabei nicht Schickes heraus.
Wieviele Datensätze, mit wievielen Datenfelder (Zeilen und Spalten) sollte Deine XLM eigentlich enthalten?

Da XLM und ich noch keine Freunde sind, zwei Fragen:
Muss auch <Document...> mit </Document> geschlossen werden oder gilt das als "Überschrift"?
Ist das Minus vor den öffnenden Tags (-<tag>) zulässig? (Firefox findet das doof.)

Gruß Frank
Bitte warten ..
Mitglied: kaiuwe28
14.11.2017 um 10:20 Uhr
Guten Morgen Volchy,

auf diesen Beitrag bin ich schon gestoßen, aber noch nicht schlau geworden.
Werde mich damit mal etwas länger auseinandersetzen und wenn ich was hinbekomme, dann hau ich es hier rein.

Danke
Bitte warten ..
Mitglied: kaiuwe28
14.11.2017, aktualisiert um 10:38 Uhr
Guten Morgen Frank,

es handelt sich täglich um 25 bis 40 XML Dateien, welche per Batch in 2 Ordner aufgeteilt werden.
Pro Ordner haben die XML Dateien die gleiche Struktur, da vom selben Ersteller. Die Spalten sind in Excel jedoch unterschiedlich. Pro Datei gibt es 1 bis 40.000 Datensätze. Ein Datensatz hat auch mal 3 Zeilen. Ich hoffe, dass ich es korrekt beschrieben habe.

Ich habe die XML Infos aus dem Office XML Handler kopiert und bis zur ersten Wiederholung kopiert. Aus Excel bekomme ich die Struktur nicht kopiert oder exportiert. Gibt es hier einen Weg, da das auch viel übersichtlicher aussieht, als über den Office XML Handler.

Die Minus Striche macht der Office XML Handler und hier kann ich dann die Unterpunkte minimieren.

Leider kann ich die Frage zum Thema Document nicht beantworten. Ich bin aktuell auch kein Freund von XML und mit VBA bin ich auch relativ weit am Anfang. Irgendwie bei mir wie mit Englisch... Verstehen und Lesen ist ok, aber beim Sprechen komme ich oft ins Schleudern.

Danke dir

Jens
Bitte warten ..
Mitglied: Pedant
14.11.2017 um 10:39 Uhr
Hallo Jens,

Zitat von kaiuwe28
Ich habe die XML Infos aus dem Office XML Handler kopiert und bis zur ersten Wiederholung kopiert.
Könntest Du eine vollständige XML posten oder wäre die zu groß oder zu indiskret?

Ich würde gerne wissen wie der "Feind" aussieht.

Zitat von kaiuwe28
Die Minus Striche macht der Office XML Handler und hier kann ich dann die Unterpunkte minimieren.
In irgendeiner Ansicht oder sind die Striche tatsächlich in der Datei vorhanden (per notepad geöffnet)?

Gruß Frank
Bitte warten ..
Mitglied: kaiuwe28
14.11.2017 um 11:16 Uhr
Könntest Du eine vollständige XML posten oder wäre die zu groß oder zu indiskret?
Ich würde gerne wissen wie der "Feind" aussieht.

Die Größe dürfte nicht da Problem sein, da die von 4KB bis 45000KB alles bei. Das Problem ist der Datenschutz. Alles Dateien beinhalten Kundeninformationen, welche ich ja am liebsten auslesen würde wollen.
Ich habe jetzt eine Datei mit einen Datensatz abgeändert mit Notepad ++ - evtl. hilft das ja.

Dateiaufbau

In irgendeiner Ansicht oder sind die Striche tatsächlich in der Datei vorhanden (per notepad geöffnet)?

Die Striche sind nur in der Ansicht vom Office XML Handler ersichtlich. Habe die mal im Notepad ++ und im Editor geöffnet, da sind diese nicht.

Ich muss mich auch korrigieren. Ich habe jetzt noch einmal 2 Dateien verglichen. Die Felder sind identisch, aber die Anordnung ist unterschiedlich.
Bitte warten ..
Mitglied: Pedant
14.11.2017 um 16:14 Uhr
Hallo Jens,

Zitat von kaiuwe28
...2 Dateien verglichen. Die Felder sind identisch, aber die Anordnung ist unterschiedlich.

ob das der beste Ansatz ist, kann ich nicht sagen, aber ich würde mit C# einen speziell angepassten Parser schreiben.
Den kann man dann in einer Forschleife auf den Ordner mit den XML-Dateien loslassen.

Myxml2csv.exe Test.xml generiert dann eine Test.csv

Die CSV hat dann das gewünscht Format und der Parser könnte auch bekannte Ungereimtheiten anfangen.

Der Ansatz wäre, die XML zeilenweise einzulesen, auf Start- und Endtags zu prüfen, diese zu verwerfen und die erwünschten Werte dazwischen in ein String-Array einzusortieren. Ist ein Datensatz durch, dann den Arrayinhalt als neue Zeile an die Zieldaten anfügen und für den nächsten Datensatz weiterparsen, bis zum Dateiende.

Falls Dich das interessiert, könnte ich Dir auch ein paar Code-Schnipsel zukommen lassen.
Falls nicht, muss ich mich hier ausklinken, denn für Deinen ursprünglichen Ansatz fehlen mir die nötigen Kenntnisse.

Gruß Frank
Bitte warten ..
Mitglied: kaiuwe28
14.11.2017 um 18:13 Uhr
Hi Frank,

schon einmal vielen Dank für deinen Ansatz.

ob das der beste Ansatz ist, kann ich nicht sagen, aber ich würde mit C# einen speziell angepassten Parser schreiben.
Den kann man dann in einer Forschleife auf den Ordner mit den XML-Dateien loslassen.

Myxml2csv.exe Test.xml generiert dann eine Test.csv

Die CSV hat dann das gewünscht Format und der Parser könnte auch bekannte Ungereimtheiten anfangen.

Der Ansatz wäre, die XML zeilenweise einzulesen, auf Start- und Endtags zu prüfen, diese zu verwerfen und die erwünschten Werte dazwischen in ein String-Array einzusortieren. Ist ein Datensatz durch, dann den Arrayinhalt als neue Zeile an die Zieldaten anfügen und für den nächsten Datensatz weiterparsen, bis zum Dateiende.

Falls Dich das interessiert, könnte ich Dir auch ein paar Code-Schnipsel zukommen lassen.
Falls nicht, muss ich mich hier ausklinken, denn für Deinen ursprünglichen Ansatz fehlen mir die nötigen Kenntnisse.

Interessiert bin ich da sicherlich, aber ich muss auch ehrlich zu mir sein. Ich habe keine Ahnung von C# und ich glaube, damit ich da mit Teilen auch nicht weiterkomme. Für mich denke ich ist es das beste weiter für VBA zu probieren.

Wenn ich richtig gelesen habe, dann kann ich da auch die Knoten bzw. Unterknoten abfragen, jedoch muss ich mir noch darüber klar werden, wie ich anfange und wie der generelle Aufbau sein muss. Da fehlen mir halt als Leihe die Erfahrungen, aber ich bin zuversichtlich.

Dir auf jeden Fall vielen Dank noch einmal Frank!
Bitte warten ..
Mitglied: colinardo
15.11.2017, aktualisiert um 14:29 Uhr
Servus kaiuwe,
du solltest dir zu aller erst mal den Aufbau des CAMT054 Formats anschauen, denn dies ist so geschachtelt das diverse Elemente mehrfach auftauchen können und Daten an unterschiedlichen Stellen stehen können, je nach Transaktionart.
https://www.hypovereinsbank.de/content/dam/hypovereinsbank/cib/pdf/ebank ...
Du musst also erst mal festlegen was ausgelesen werden soll.

Mit einem Powershell-Skript kannst du das ganze für einen ganzen Satz an XML-Dateien abfackeln.

Ich habe dir mal ein Gerüst gebaut, mit "sprechenden Eigenschaften" des CAMT054 Formats damit du die Eigenschaten einfacher auswählen kannst:
(Richtigkeit der Zuordnung ohne Gewähr und an dem o. verlinkten PDF orientiert!)
In der Variablen $message findet sich die Strukturierte Ablage der XML-Datei mit einfach abrufbaren Eigenschaften. Diese musst du nur noch wählen, in ein PSCustomObject packen und per Export-CSV in eine CSV exportieren.
Hierbei ist wie oben geschrieben zu beachten das bestimmmte Teile wie die Entry-Elemente mehrfach vorkommen können und somit Array's sind welche mit einer zusätzlichen Schleife durchlaufen werden müssen. Hier kommt es eben darauf an wie du es am Ende darstellen willst.

Bei Bedarf helfe ich dir gerne gegen entsprechende Aufwandsentschädigung.

Grüße Uwe
Bitte warten ..
Mitglied: kaiuwe28
15.11.2017 um 14:36 Uhr
Hallo Uwe,

ich bin mal wieder fasziniert... wahrscheinlich hat es bei dir nicht einmal viel Zeit gekostet, dies zu erstellen.
Bitte gib mir etwas Zeit mich damit auseinander zusetzen. Spätestens nächste Woche werde ich ein Update posten.

Riesen Dank auf jeden Fall!

Viele Grüße

Jens (kaiuwe28)
Bitte warten ..
Ähnliche Inhalte
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 ...

VB for Applications
Excel VBA XML-Nodes auslesen
Frage von chef1568VB for Applications4 Kommentare

Hallo zusammen, ich lese eine XML-Datei mittels DOMDocument-Methode aus. Ich möchte nun den Wert von <Text> aus der Stellenbezeichnung ...

XML
XML Datei mit Powershell splitten
gelöst Frage von LianenSchwingerXML2 Kommentare

Hallo, ich habe eine riesige Exportdatei im XML-Format die ich nicht weiterverarbeiten kann. Der Aufbau ist wie folgt: Ich ...

XML
Vbs - simple XML Datei auslesen
gelöst Frage von DeeJayBeeXML4 Kommentare

Hallo zusammen, ich glaub, ich hab grad ne kleine Blockade oder denke viel zu kompliziert. Gegeben ist eine xml-Datei ...

Neue Wissensbeiträge
Windows Update
MS SQL Server Updates
Information von sabines vor 6 StundenWindows Update

Für 2012, 2014 und 2016 sind seit Dienstag wichtige Sicherheitsupdates verfügar, die eine remote, leicht auszunutzende Lücke im Reporting ...

Microsoft Office

Microsoft warnt: Office 365 am 29. Februar leider nicht nutzbar

Information von Lochkartenstanzer vor 19 StundenMicrosoft Office7 Kommentare

Moin, Wie die Überschrift schon sagt, gibt es offensichtlicham 29. februar ein Problem: Microsoft warnt: Office 365 am 29. ...

Netzwerkmanagement
Siemens Switche initial konfigurieren
Tipp von brammer vor 22 StundenNetzwerkmanagement2 Kommentare

Hallo, Bisher gab es für Siemens Switche die Möglichkeit die initiale Konfiguration über den Simatic Manager oder das Primary ...

Virtualisierung

VEEAM Instant VM Recovery Datenverlust möglich

Information von sabines vor 2 TagenVirtualisierung

Wer instant VM Recovery unter Veeam nutzt, sollte seine Installation überprüfen. In manchen Fällen könnte es zu Datenverlust kommen, ...

Heiß diskutierte Inhalte
Windows Server
Active Directory: Fehler beim Re-Promoten eines Servers
Frage von jordelWindows Server38 Kommentare

Hallo zusammen, Wir hatten einige Replikationsprobleme, weshalb ich gestern Nacht einen Domain Controller erst demoten und danach wieder promoten ...

Microsoft Office
Welches MS Office Lizensmodell für 7 Arbeitsplätze in kleinen Unternehmen
Frage von harbyadmMicrosoft Office20 Kommentare

Hallo, Ich frage Euch welches Lizensmodell das günstigste ist.? ich benötige für z.Zeit 7 ARBEITSPLÄTZE , alles Windows 8-10, ...

PHP
Dynamisches Array erstellen in PHP
Frage von Xaero1982PHP20 Kommentare

Moin Zusammen, ich bräuchte mal einen Geistesblitz. Ich habe ganz viele Daten in einer MongoDb. Ich möchte diese Daten ...

Windows 8
Die digitale Signatur dieser Datei kann nicht überprüft werden
Frage von LochkartenstanzerWindows 817 Kommentare

Moin, Seit gestern ärgere ich mich mit einem verkorksten Windows 8 herum. Bei vielen EXE-Dateien starten will, kommt die ...