Sample code for 30+ languages & platforms
DataFlex

Iterate over Direct Children with a Specific Tag

See more XML Examples

Demonstrates how to iterate over direct children having a specific tag.

The input XML, available at http://www.chilkatsoft.com/data/fruit.xml, is this:

<root>
    <fruit color="red">apple</fruit>
    <fruit color="green">pear</fruit>
    <veg color="orange">carrot</veg>
    <meat animal="cow">beef</meat>
    <xyz>
        <fruit color="blue">blueberry</fruit>
        <veg color="green">broccoli</veg>
    </xyz>
    <fruit color="purple">grape</fruit>
    <cheese color="yellow">cheddar</cheese>
</root>

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoXml
    Variant vChild
    Handle hoChild
    Integer iNumWithTag
    Integer i
    String sTemp1
    String sTemp2

    Move False To iSuccess

    Get Create (RefClass(cComChilkatXml)) To hoXml
    If (Not(IsComObjectCreated(hoXml))) Begin
        Send CreateComObject of hoXml
    End

    // The sample input XML is available at http://www.chilkatsoft.com/data/fruit.xml
    Get ComLoadXmlFile Of hoXml "fruit.xml" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoXml To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  Get the number of direct children having the tag "fruit"
    Get ComNumChildrenHavingTag Of hoXml "fruit" To iNumWithTag

    If (iNumWithTag > 0) Begin

        For i From 0 To (iNumWithTag - 1)
            Get ComGetNthChildWithTag Of hoXml "fruit" i To vChild
            If (IsComObject(vChild)) Begin
                Get Create (RefClass(cComChilkatXml)) To hoChild
                Set pvComObject Of hoChild To vChild
            End
            Get ComTag Of hoChild To sTemp1
            Get ComContent Of hoChild To sTemp2
            Showln i ": " sTemp1 " : " sTemp2
            Send Destroy of hoChild
        Loop

        Showln "-----"

        // Do the same as the above loop, but instead of creating
        // a new object instance for each child, call GetNthChildWithTag2 to
        // update the object's reference instead.
        For i From 0 To (iNumWithTag - 1)
            // Navigate to the Nth child.  
            Get ComGetNthChildWithTag2 Of hoXml "fruit" i To iSuccess
            Get ComTag Of hoXml To sTemp1
            Get ComContent Of hoXml To sTemp2
            Showln i ": " sTemp1 " : " sTemp2
            // Navigate back up to the parent:
            Get ComGetParent2 Of hoXml To iSuccess
        Loop

        Showln "-----"
    End



End_Procedure