Sample code for 30+ languages & platforms
PowerBuilder

Parsing XML Children Having Identical Tags

See more XML Examples

Demonstrates how to deal with XML where child elements may have identical tags.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Xml
integer li_NumPhoneNumbers
integer i
oleobject loo_XPhoneNumber
integer li_NumGroupMemberships
oleobject loo_XMembership

li_Success = 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>
// 

loo_Xml = create oleobject
li_rc = loo_Xml.ConnectToNewObject("Chilkat.Xml")
if li_rc < 0 then
    destroy loo_Xml
    MessageBox("Error","Connecting to COM object failed")
    return
end if

li_Success = loo_Xml.LoadXmlFile("qa_data/xml/georgeCostanza.xml")

li_NumPhoneNumbers = loo_Xml.NumChildrenHavingTag("entry|*:phoneNumber")
i = 0
do while i < li_NumPhoneNumbers
    loo_XPhoneNumber = loo_Xml.GetNthChildWithTag("entry|*:phoneNumber",i)
    Write-Debug loo_XPhoneNumber.Content
    destroy loo_XPhoneNumber
    i = i + 1
loop
Write-Debug "----"

li_NumGroupMemberships = loo_Xml.NumChildrenHavingTag("entry|*:groupMembershipInfo")
i = 0
do while i < li_NumGroupMemberships
    loo_XMembership = loo_Xml.GetNthChildWithTag("entry|*:groupMembershipInfo",i)
    Write-Debug loo_XMembership.GetAttrValue("href")
    destroy loo_XMembership
    i = i + 1
loop


destroy loo_Xml