Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
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: alle child nodes eines parent nodes auslesen

xml: alle child nodes eines parent nodes auslesen
19.07.2018 12:41:22
René
Hallo zusammen,
wie kann man per VBA in einem xml file alle untergeordneten Knoten eines Unterknotens auslesen?
Wenn man voraussetzt, dass man bereits weiß, dass man sich im Unterknoten 1B befindet, wie erhält man die Namen der Knoten Unterknoten 2B1 u. Unterknoten 2B2 sowie deren Text (2B1A, 2B1B) (s.u.)
Bsp. Struktur des xml files:
Hauptknoten: SektionA
Unterknoten 1A: Kunde1
Unterknoten 2A1: LandA
Unterknoten 2A2: LandB
Unterknoten 1B: Kunde2
Unterknoten 2B1: LandC
Text 2B1A: PreisX
Text 2B1B: GrößeY
Unterknoten 2B2: LandD
usw.
Gruß
René

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xml: alle child nodes eines parent nodes auslesen
19.07.2018 12:52:50
PeterK
Hallo
Excel kann XML importieren (DATEN - AUS ANDERER QUELLE - XML DATENIMPORT)
AW: xml: alle child nodes eines parent nodes auslesen
19.07.2018 13:21:37
René
Danke für die Info.
Die Knoten sollen per VBA direkt aus dem xml file ausgelesen werden, quasi für den User nicht sichtbar.
AW: xml: alle child nodes eines parent nodes auslesen
19.07.2018 13:48:09
PeterK
Hallo
Hab folgenden Code auf https://stackoverflow.com/questions/11305/how-to-parse-xml-using-vba gefunden und etwas modifiziert. Du musst in EXTRAS-VERWEISE-MICROSOFT XML V6.0 aktivieren.

Option Explicit
Public Sub LoadDocument()
Dim xDoc As MSXML2.DOMDocument60
Set xDoc = New MSXML2.DOMDocument60
xDoc.validateOnParse = False
If xDoc.Load("C:\Users\ich\Documents\test.xml") Then
' The document loaded successfully.
' Now do something intersting.
DisplayNode xDoc.ChildNodes, 0
Else
' The document failed to load.
' See the previous listing for error information.
End If
End Sub
Public Sub DisplayNode(ByRef Nodes As MSXML2.IXMLDOMNodeList, _
ByVal Indent As Integer)
Dim xNode As MSXML2.IXMLDOMNode
Indent = Indent + 2
For Each xNode In Nodes
If xNode.NodeType = NODE_TEXT Then
Debug.Print Space$(Indent) & xNode.ParentNode.nodeName & _
":" & xNode.NodeValue
End If
If xNode.HasChildNodes Then
DisplayNode xNode.ChildNodes, Indent
End If
Next xNode
End Sub

Anzeige
AW: xml: alle child nodes eines parent nodes auslesen
19.07.2018 14:09:55
René
wow, das sieht schon mal richtig gut.
vielen Dank dafür.
kann ich die Prozedur auch stoppen, wenn ich die Unterknoten nur des 1. Unterknoten (zum Hauptknoten) auslesen möchte?
Die Namen der Unterknoten der 2. Ebene möchte ich nämlich den Usern in einer UserForm zur Verfügung stellen.
Davon können sie dann wieder einen Auswählen und folglich wird der Inhalt des Knotens der 2. Ebene zur Verfügung gestellt.
AW: xml: alle child nodes eines parent nodes auslesen
19.07.2018 14:16:00
PeterK
Hallo
Kannst Du Deine XML Datei hochladen, damit ich auch sehen kann was Du genau vorhast
AW: xml: alle child nodes eines parent nodes auslesen
19.07.2018 14:34:07
René
Klar, sehr gerne. anbei das Bsp.
Wenn der User den Knoten "Customer_Deutschland" (über einen UserForm Dialog) auswähl benötige ich die Rückmeldung welche "Kd_ID_..." Knoten darunter enthalten sind.
Sollte der User im folgenden Dialog zB den Unterknoten "Kd_ID_Test7" ausgewählt haben, so müsste ich "Geschäft, Land, ID u. Anzahl_Kunden" auslesen können.
https://www.herber.de/bbs/user/122791.zip
Anzeige
AW: xml: alle child nodes eines parent nodes auslesen
19.07.2018 14:34:12
René
Klar, sehr gerne. anbei das Bsp.
Wenn der User den Knoten "Customer_Deutschland" (über einen UserForm Dialog) auswähl benötige ich die Rückmeldung welche "Kd_ID_..." Knoten darunter enthalten sind.
Sollte der User im folgenden Dialog zB den Unterknoten "Kd_ID_Test7" ausgewählt haben, so müsste ich "Geschäft, Land, ID u. Anzahl_Kunden" auslesen können.
https://www.herber.de/bbs/user/122791.zip
AW: xml: alle child nodes eines parent nodes auslesen
19.07.2018 15:21:09
PeterK
Hallo
Könnte in etwa so ausschauen

Option Explicit
Dim xDoc As MSXML2.DOMDocument60
Public Sub LoadDocument()
Set xDoc = New MSXML2.DOMDocument60
xDoc.validateOnParse = True
If xDoc.Load("C:\Users\ich\Downloads\child_nodes_of_parent_node.xml") Then
' The document loaded successfully.
Else
' The document failed to load.
End If
End Sub
Sub GetKD_ID(myCustomer As String)
Dim oSeqNodes As IXMLDOMNodeList
Dim oSeqNode As IXMLDOMNode
Dim oSeqChild As IXMLDOMNode
Set oSeqNodes = xDoc.SelectNodes("//BrandData/" & myCustomer)
If oSeqNodes.Length = 0 Then
'show some message
Else
For Each oSeqNode In oSeqNodes
For Each oSeqChild In oSeqNode.ChildNodes
Debug.Print oSeqChild.nodeName
Next
Next
End If
End Sub
Sub GetKD_ID_Info(myCustomer As String, myK_ID As String)
Dim oSeqNodes As IXMLDOMNodeList
Dim oSeqNode As IXMLDOMNode
Dim oSeqChild As IXMLDOMNode
Set oSeqNodes = xDoc.SelectNodes("//BrandData/" & myCustomer & "/" & myK_ID)
If oSeqNodes.Length = 0 Then
'show some message
Else
For Each oSeqNode In oSeqNodes
For Each oSeqChild In oSeqNode.ChildNodes
Debug.Print oSeqChild.nodeName, ":", oSeqChild.Text
Next
Next
End If
End Sub
Sub Finish()
Set xDoc = Nothing
End Sub
Sub RunXml()
LoadDocument
GetKD_ID "Customer_Deutschland"
GetKD_ID_Info "Customer_Deutschland", "Kd_ID_Test8"
Finish
End Sub

Anzeige
AW: xml: alle child nodes eines parent nodes auslesen
20.07.2018 07:45:29
René
VIELEN DANK für die sehr schnelle und perfekte Unterstützung!!
Das ist genau was ich benötige. Mit ein paar wenigen Anpassungen konnte ich den Code nahezu exakt übernehmen. Traumhaft!
Vlt. noch eine Frage: wissen Sie, ob es online ein gutes Tutorial zum Thema Excel-VBA-XML gibt, in dem man solche Inhalte wie von Ihnen geschrieben nachlesen kann?
AW: xml: alle child nodes eines parent nodes auslesen
20.07.2018 09:19:38
PeterK
Hallo
Schau Dir einmal dieses Buch an (ab Seite 100 gehts los mit XML). Da es sich nur um eine Vorschau handelt sind einzelne Seiten nicht verfügbar :-(
P.S. Author ist ein Namenskollege von Dir :-)

https://books.google.at/books?id=hNqhCwAAQBAJ&pg=PA127&lpg=PA127&dq=msxml2&source=bl&ots= _
gbPIFksNQq&sig=mTLSGpg1gfOj4de6Adb_A5tgmKA&hl=de&sa=X&ved=0ahUKEwiP1u_Qi63cAhXH2CwKHTgDClYQ6AEIUTAH#v=onepage&q&f=false

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge