title image


Smiley Re: XML - Suchen nach bestimmtem Attribut - Knoten darunter hängen
Hallo johannes6,



Du musst alle Knoten des XML-Files durchsuchen bis Du den Knoten "adresse" gefunden hast. Und dann innerhalb dieses Knotens alle Attribute durchlaufen und nach dem Attribut "person" mit dem Wert "johannes" suchen.

Beispiel:



------------------------------------------------------------------------



Public Sub SuchenInXML()



' XML Version 3.0

Dim xmlDoc As New MSXML2.DOMDocument30

Dim XMLElement As MSXML2.IXMLDOMElement

Dim newNode As MSXML2.IXMLDOMElement

Dim strXMLFilename As String



' Definitionen für XMLSearchNode

Dim XMLSubElement As MSXML2.IXMLDOMElement

Dim strNodeName As String

Dim strAttrName As String

Dim strAttrValue As String



strXMLFilename = "C:\XMLTest01.xml"



xmlDoc.Load strXMLFilename



If xmlDoc.xml = "" Then

MsgBox "Das XML-Dokumnet " & strXMLFilename & " ist leer!"

Exit Sub

End If



' Start beim Dokumentelement

Set XMLElement = xmlDoc.documentElement



' Suchbegriffe für XMLSearchNode füllen

strNodeName = "adresse"

strAttrName = "person"

strAttrValue = "johannes"



' ChildNode suchen

XMLSearchNode XMLElement, XMLSubElement, strNodeName, strAttrName, strAttrValue



' Node einfügen

Set newNode = xmlDoc.createElement("wohnsitz")

XMLSubElement.appendChild newNode



' XML-File schreiben

xmlDoc.Save strXMLFilename



End Sub



Sub XMLSearchNode(XMLElement As IXMLDOMElement, _

XMLSubElement As IXMLDOMElement, _

strNodeName As String, _

strAttrName As String, _

strAttrValue As String)

Dim lngI As Long

Dim lngJ As Long



For lngI = 0 To XMLElement.childNodes.length - 1

If XMLElement.childNodes(lngI).nodeType = NODE_ELEMENT Then

' Gesuchter Knoten?

If strNodeName = XMLElement.childNodes(lngI).baseName Then

' Alle Attribute durchsuchen

For lngJ = 0 To XMLElement.childNodes(lngI).attributes.length - 1

' Attributname und Attributwert gefunden?

If strAttrName = XMLElement.childNodes(lngI).attributes(lngJ).baseName _

And strAttrValue = XMLElement.childNodes(lngI).attributes(lngJ).nodeValue Then

Set XMLSubElement = XMLElement.childNodes(lngI)

Exit Sub

End If

Next lngJ

End If

' Rekursivaufruf mit dem gefundenen Knoten

XMLSearchNode XMLElement.childNodes(lngI), XMLSubElement, strNodeName, strAttrName, strAttrValue

End If

Next lngI



End Sub



------------------------------------------------------------------------



Gruß

EW

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: