DataFlex
DataFlex
Parsing XML Children Having Identical Tags
See more XML Examples
Demonstrates how to deal with XML where child elements may have identical tags.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoXml
Integer iNumPhoneNumbers
Integer i
Variant vXPhoneNumber
Handle hoXPhoneNumber
Integer iNumGroupMemberships
Variant vXMembership
Handle hoXMembership
String sTemp1
Move False To iSuccess
// 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>
//
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Get ComLoadXmlFile Of hoXml "qa_data/xml/georgeCostanza.xml" To iSuccess
Get ComNumChildrenHavingTag Of hoXml "entry|*:phoneNumber" To iNumPhoneNumbers
Move 0 To i
While (i < iNumPhoneNumbers)
Get ComGetNthChildWithTag Of hoXml "entry|*:phoneNumber" i To vXPhoneNumber
If (IsComObject(vXPhoneNumber)) Begin
Get Create (RefClass(cComChilkatXml)) To hoXPhoneNumber
Set pvComObject Of hoXPhoneNumber To vXPhoneNumber
End
Get ComContent Of hoXPhoneNumber To sTemp1
Showln sTemp1
Send Destroy of hoXPhoneNumber
Move (i + 1) To i
Loop
Showln "----"
Get ComNumChildrenHavingTag Of hoXml "entry|*:groupMembershipInfo" To iNumGroupMemberships
Move 0 To i
While (i < iNumGroupMemberships)
Get ComGetNthChildWithTag Of hoXml "entry|*:groupMembershipInfo" i To vXMembership
If (IsComObject(vXMembership)) Begin
Get Create (RefClass(cComChilkatXml)) To hoXMembership
Set pvComObject Of hoXMembership To vXMembership
End
Get ComGetAttrValue Of hoXMembership "href" To sTemp1
Showln sTemp1
Send Destroy of hoXMembership
Move (i + 1) To i
Loop
End_Procedure