für die neue XML Lib gepostet werden. Im engl. Forum gibts auch schon
erste Beispiele: http://www.purebasic.fr/english/viewtopic.php?t=27392
Ich mach dann auch gleich den Anfang (meine XML-Kenntnisse sind etwas unter #NULL )
Code: Alles auswählen
EnableExplicit
Define.s XML
Define.l xmldoc, *node
XML = "<adressen>"
XML + " <adresse>"
XML + " <vorname>Peter</vorname>"
XML + " <nachname>Parker</nachname>"
XML + " </adresse>"
XML + " <adresse>"
XML + " <vorname>Bruce</vorname>"
XML + " <nachname>Wayne</nachname>"
XML + " </adresse>"
XML + " <adresse>"
XML + " <vorname>Clark</vorname>"
XML + " <nachname>Kent</nachname>"
XML + " </adresse>"
XML + "</adressen>"
Procedure ExamineXML(*node)
; diese Procedure geht rekursive alle Nodes durch
; und meldet alle gefundenen Personen ;)
Protected I.l, *child, *new
Protected NodeName.s, vorname.s, nachname.s
For I = 1 To XMLChildCount(*node)
*child = ChildXMLNode(*node, I)
NodeName = GetXMLNodeName(*child)
If NodeName = "vorname"
vorname = GetXMLNodeText(*child)
*new = NextXMLNode(*child)
NodeName = GetXMLNodeName(*new)
If NodeName = "nachname"
nachname = GetXMLNodeText(*new)
MessageRequester("Gefunden:", vorname + " " + nachname, #MB_ICONINFORMATION)
vorname = "" : nachname = ""
EndIf
EndIf
ExamineXML(*child)
Next
EndProcedure
xmldoc = CatchXML(#PB_Any, @XML, Len(XML))
If XMLStatus(xmldoc) = #PB_XML_Success
*node = RootXMLNode(xmldoc)
ExamineXML(*node)
EndIf
FreeXML(xmldoc)