Forums Neueste Beiträge
 

doppelte XML Tags einlesen Teil2

03/03/2010 - 12:03 von Ingi70 | Report spam
Hallo,

leider konnte ich auf dem ursprüglichen NG Beitrag "Doppelte XML Tags
einlesen" nicht mehr antworten.

Also, damals ging es darum n Tags in einem XML Baum auszugeben.

Hier der Code :

Dim XmlDocument As MSXML2.DOMDocument
Dim XmlNodeList As MSXML2.IXMLDOMNodeList
Dim rs As DAO.Recordset
Dim Count As Integer


Set XmlDocument = New MSXML2.DOMDocument
If XmlDocument.Load(AFile) Then
Set XmlNodeList XmlDocument.documentElement.getElementsByTagName("Member")
If Not XmlNodeList Is Nothing And XmlNodeList.length > 0 Then
Set rs = CurrentDb.OpenRecordset("tbl_Member", _
dbOpenDynaset, dbSeeChanges)
For Count = 0 To XmlNodeList.length - 1
Debug.Print XmlNodeList.Item(Count).Text
rs.AddNew
rs!Member = XmlNodeList.Item(Count).Text
rs.Update
Next Count
rs.Close
Set rs = Nothing
End If
End If
Set XmlDocument = Nothing

Das klappt auch ganz gut. Habe ich aber folgende XML Struktur :

<opt system_version="1" version="0">
<objects name="REF_123455" class="service" hidden="0" lock="" nodel=""
ref="REF_123455" type="group">
<data name="Connect" comment="bla bla la">
<members>REF_1</members>
<members>REF_2</members>
<members>REF_3</members>
<members>REF_4</members>
</data>
</objects>
<objects name="REF_BAAAAAAAAA" class="service" hidden="0" lock=""
nodel="" ref="REF_BAAAAAAAAA" type="group">
<data name="TSM_" comment="Backup import">
<members>REF_qqalWDrEGO</members>
<members>REF_mCudDVvvwf</members>
</data>
</objects>
</opt>

Dann hat die XmlNodeList.length den Wert 6 !! Also 4x Members aus
Objekt 1 und 2x Members aus Objekt 2. Demensprechend werden beim Loop
immer 6 Mal die Values geschrieben und nicht
4x für Objekt REF_123455 und 2x für Objekt REF_BAAAAAAAAA.

Ich denke mal, die Zeile Set XmlNodeList XmlDocument.documentElement.getElementsByTagName("Member") bezieht
sich auf "alle" Member Tags im Dokument und nicht nur auf die Member
Tags des Objektes.
Bràuchte da mal Hilfe

Viele Grüße aus Ratingen

Ingo v. Itter
 

Lesen sie die antworten

#1 Stefan Hoffmann
03/03/2010 - 13:29 | Warnen spam
hallo Ingo,

On 03.03.2010 12:03, Ingi70 wrote:
Ich denke mal, die Zeile Set XmlNodeList > XmlDocument.documentElement.getElementsByTagName("Member") bezieht
sich auf "alle" Member Tags im Dokument und nicht nur auf die Member
Tags des Objektes.


Korrekt.

Bràuchte da mal Hilfe


http://msdn.microsoft.com/en-us/lib...85%29.aspx
http://msdn.microsoft.com/en-us/lib...85%29.aspx
http://msdn.microsoft.com/en-us/lib...85%29.aspx

Z.B.:

Option Compare Database
Option Explicit

Public Sub TestXml()

Dim document As MSXML2.DOMDocument
Dim nodes As MSXML2.IXMLDOMNodeList
Dim root As MSXML2.IXMLDOMNode

Dim Count As Long

Set document = New MSXML2.DOMDocument
If document.Load("C:\Temp\t.xml") Then

Set root = document.childNodes.Item(0)
Set nodes = root.selectNodes("//objects//members")

If Not nodes Is Nothing And nodes.Length > 0 Then
For Count = 0 To nodes.Length - 1
Debug.Print _
NodeStr(nodes.Item(Count).parentNode.parentNode); Chr(9); _
NodeStr(nodes.Item(Count).parentNode); Chr(9); _
NodeStr(nodes.Item(Count))
Next Count
End If

Set nodes = Nothing
Set root = Nothing

End If
Set document = Nothing

End Sub

Public Function NodeStr(ANode As MSXML2.IXMLDOMNode) As String

If ANode Is Nothing Then
NodeStr = "Nothing"
Else
NodeStr = ANode.nodeName & " - " & ANode.Text
End If

End Function


mfG

Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm

Ähnliche fragen