Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

XML Elemente auslesen

XML Elemente auslesen
21.04.2019 12:50:30
Marc
Frohe Ostern liebe Forumsgemeinde,
ich möchte aus einer wie folgt aufgebauten Zeile eines XML-Documents den Text ("128.011000") auslesen. Die einzige eindeutige Referenz auf welche ich mich beziehen kann ist "SDWS", also das was in der Zeile als coaCode bezeichnet ist.
lineItem coaCode="SDWS">128.011000
(Die kleiner/größer Zeichen am Anfang und Ende der Zeile musste ich aus Darstellungsgründen weg lassen.)
Nun muss dieser coaCode wohl ein Attribut dieses Childnode sein aber ich weiß nicht mit welchem Befehl ich mich auf diese Referenz beziehe wenn ich über alle Elemente mit dem TagName "lineItem" iteriere.
Welchem Attribut entspricht der coaCode?
Beste Grüße,
Marc

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: XML Elemente auslesen
21.04.2019 12:54:35
Marc
Entschuldigt bitte, mir gelingt es leider nicht, die XML-Codezeile vollständig darzustellen.
AW: XML Elemente auslesen
21.04.2019 14:08:14
Zwenn
Hallo Marc,
dann lade eine XML Datei als txt Datei hoch.
Deine Zeile hat das Tag lineItem und das Attribut coaCode mit dem Wert SDWS. Der Wert 128.011000 sieht für mich in der Darstellungsform aus, wie der Text des Knotens. Du müsstest also in etwa so dran kommen:

Dim knotenLineItem as Object
Dim textDesKnoten as String
set knotenLineItem = xmlDocument.getElementsByTagName("lineItem")(INDEX)
textDesKnoten = knotenLineItem.Text

Um gezielt auf bestimmte Knoten zuzugreifen müsste man Deine XML Datei kennen und am besten auch, was Du bisher an Code hast, um sie zu verarbeiten.
Viele Grüße,
Zwenn
Anzeige
AW: XML Elemente auslesen
21.04.2019 14:18:08
Marc
Hallo Zwenn,
hier findest Du den XML-Code als Textdatei:
https://www.herber.de/bbs/user/129303.txt
Ich würde als Referenz gerne die eindeutigste Referenz der jeweiligen Zeile verwenden und das ist das was in Gänsefüschen hinter coaCode steht. Ich bin mir nämlich nicht sicher inwiefern sich die Zeilen Nummern und damit ggf. der Index verändern wenn man zum Beispiel den Jahresabschluss einer anderen Company zieht.
AW: XML Elemente auslesen
21.04.2019 14:25:20
Marc
Noch eine kurze Anmerkung:
Ich möchte die richtige Zeile anhand des Attributs bzw. dessen Wert "SDWS" erkennen und mir daraufhin den Text des Elements anzeigen lassen aber so etwas wie "getElementsbyAttribute" habe ich im Objektkatalog nicht gefunden.
Anzeige
AW: XML Elemente auslesen
21.04.2019 15:26:50
Zwenn
Hallo Marc,
es gibt die Methode getAttribute(). Um die zu verwenden muss man aber alle Knoten durchlaufen, die man vorher in einer Node-Collection eingesammelt hat. An Deinen speziellen Wert kommst Du so:

Sub AttributWertXML()
'Variablen für den Dateizugriff und das DOM-Handling
Dim xmlDocument As Object
Dim knotenWurzel As Object
Dim knotenStamm As Object
Dim xmlDatei As String
Dim sdwsWert As String
xmlDatei = "G:\Rest\Herber Forum\XML bestimmten Wert an Attribut erkennen - Marc\129303.xml"
'XML-Dokument instanzieren und XML-Dokument einlesen
Set xmlDocument = CreateObject("MSXML2.DOMDocument.6.0")
xmlDocument.async = False
xmlDocument.Load xmlDatei
'Alle lineItem Tags in einer Node-Collection sammeln
Set knotenWurzel = xmlDocument.getElementsByTagName("lineItem")
If Not knotenWurzel Is Nothing Then
'Wenn es eine lineItem-Node-Collection gibt
'alle durchgehen, bis das Attribut coaCode
'den gewünschten Wert hat
For Each knotenStamm In knotenWurzel
If knotenStamm.getAttribute("coaCode") = "SDWS" Then
'SDWS gefunden, also speichern
sdwsWert = knotenStamm.Text
'Attributwert wurde gefunden, also Schleife verlassen
Exit For
End If
Next knotenStamm
Else
sdwsWert = "Keine lineItem-Tags gefunden"
End If
'Ergebnis ausgeben
MsgBox sdwsWert
'Aufräumen
Set xmlDocument = Nothing
Set knotenWurzel = Nothing
Set knotenStamm = Nothing
End Sub

Viele Grüße,
Zwenn
Anzeige
AW: XPath
21.04.2019 18:56:16
Fennek
Hallo,
auch wenn Zwenn's Lösung (wie immer) perfekt ist, wollte ich diese Gelegenheit nutzen mit MSXML die Variante "XPath" zu testen.

Sub XML_Extract()
'Debug.Print Dir(Pfad & "Test_XML.txt") ### Pfad ist definiert
f = "Test_XML.txt"
With CreateObject("MSXML2.DOMDocument")
.SetProperty "SelectionLanguage", "XPath"
.Load Pfad & f
Set ret = .SelectNodes("//lineItem[@coaCode='SDWS']")
For Each rr In ret
Debug.Print rr.nodename, rr.Text
Next rr
End With
End Sub
Hier werden alle (identischen) Werte ausgegeben.
mfg
(In Python und Selenium ist es üblich "XPath" zu nutzen)
Anzeige
AW: ! img !
26.04.2019 18:31:04
Fennek
Test: Text
AW: ! img !
26.04.2019 20:44:40
Fennek

Test: Text



AW: ! img !
27.04.2019 16:52:02
Fennek
Test: Text

AW: ! img !
27.04.2019 17:24:29
Mullit
Hallo Fennek,
was machst Du da für Sachen, willst Du uns Deine ersten Gehversuche in Java-Script unterschmuggeln oder was...!?...;-)
Gruß, Mullit
AW: ! img !
27.04.2019 18:28:28
Fennek
Hallo Mullit,
meine Java-Script - Kenntnisse sind völlig eingerosted, deshalb brachte so viele Versuche bis ich mich wieder an das ";" erinnerte. Ich halte es für ein Problem der Webseite und habe bereits eine email an Herrnn Herber geschrieben.
mfg
Anzeige
AW: iFrame
26.04.2019 18:34:18
Fennek
Test: Text

AW: XML Elemente auslesen
21.04.2019 22:29:36
Marc
Hallo Zwenn,
läuft wie geschmiert. Besten Dank für den Tipp. ;)
Beste Grüße,
Marc
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge