Hi,
Another example ... will store all found nodes in an array:
Code: Alles auswählen
Procedure XMLNodesFromTagName( *StartNode, TagName.s, Array nodeList.i(1), FreeArray = #True )
Protected *nChild
Protected NodeName.s
If FreeArray : FreeArray( nodeList() ) : EndIf
If Not *StartNode : ProcedureReturn 0 : EndIf
NodeName = GetXMLNodeName(*StartNode)
If NodeName = TagName
If FreeArray
Dim nodeList.i(0)
Else
ReDim nodeList.i(ArraySize(nodeList())+1)
EndIf
nodeList.i(ArraySize(nodeList())) = *StartNode
EndIf
*nChild = ChildXMLNode(*StartNode)
While *nChild
XMLNodesFromTagName( *nChild, TagName, nodeList(), #False )
*nChild = NextXMLNode(*nChild)
Wend
ProcedureReturn (ArraySize(nodeList()) + 1)
EndProcedure
The procedure scans the whole xml tree for all nodes with the given tagname.
All found nodes are added to an array of type integer.
The procedure will return the amount of found nodes if you call it without the parameter FreeArray (or set to #True).
I did not tested the code!
Hope it will help anyway.
cu,
guido
[EDIT]
UUUUPS ... umgekehrt ist es mir schon passiert, dass ich deutsch im englischen Forum geschrieben habe.
aber englisch im deutschen
[/EDIT]