PureBasic
PureBasic
Parsing XML Children Having Identical Tags
See more XML Examples
Demonstrates how to deal with XML where child elements may have identical tags.Chilkat PureBasic Downloads
IncludeFile "CkXml.pb"
Procedure ChilkatExample()
success.i = 0
; This example will get the phoneNumber's and groupMembershihpInfo's from the following XML:
; <?xml version="1.0" encoding="UTF-8" ?>
; <someEntries>
; <entry>
; <id>123</id>
; <updated>2017-07-19T05:19:57.761Z</updated>
; <app:edited xmlns:app="http://www.w3.org/2007/app">2017-07-19T05:19:57.761Z</app:edited>
; <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
; <title>George Costanza</title>
; <gd:name>
; <gd:fullName>George Costanza</gd:fullName>
; <gd:givenName>George</gd:givenName>
; <gd:familyName>Costanza</gd:familyName>
; </gd:name>
; <gd:phoneNumber rel="http://schemas.google.com/g/2005#home">(555) 123-4567</gd:phoneNumber>
; <gd:phoneNumber rel="http://schemas.google.com/g/2005#mobile">(555) 444-8877</gd:phoneNumber>
; <gd:phoneNumber rel="http://schemas.google.com/g/2005#work">(555) 678-1111</gd:phoneNumber>
; <gContact:groupMembershipInfo deleted="false" href="http://www.google.com/123"/>
; <gContact:groupMembershipInfo deleted="false" href="http://www.google.com/456"/>
; </entry>
; </someEntries>
;
xml.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkXml::ckLoadXmlFile(xml,"qa_data/xml/georgeCostanza.xml")
numPhoneNumbers.i = CkXml::ckNumChildrenHavingTag(xml,"entry|*:phoneNumber")
i.i = 0
While i < numPhoneNumbers
xPhoneNumber.i = CkXml::ckGetNthChildWithTag(xml,"entry|*:phoneNumber",i)
Debug CkXml::ckContent(xPhoneNumber)
CkXml::ckDispose(xPhoneNumber)
i = i + 1
Wend
Debug "----"
numGroupMemberships.i = CkXml::ckNumChildrenHavingTag(xml,"entry|*:groupMembershipInfo")
i = 0
While i < numGroupMemberships
xMembership.i = CkXml::ckGetNthChildWithTag(xml,"entry|*:groupMembershipInfo",i)
Debug CkXml::ckGetAttrValue(xMembership,"href")
CkXml::ckDispose(xMembership)
i = i + 1
Wend
CkXml::ckDispose(xml)
ProcedureReturn
EndProcedure