Sample code for 30+ languages & platforms
DataFlex

Traverse the XML Tree

See more XML Examples

Demonstrates how to traverse all nodes in an XML tree.

Note: This example requires Chilkat v9.5.0.77 or greater.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoXml
    Variant vSbState
    Handle hoSbState
    String sTemp1

    Move False To iSuccess

    // Use the NextInTraversal2 method to traverse all nodes in the XML tree rooted at the caller.

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

    Get ComLoadXmlFile Of hoXml "qa_data/xml/twoPigs.xml" To iSuccess

    // This is the XML traversed in this example:

    // <pig-rescue>
    //   <herd name="Cathy">
    // 	<species name="pot belly pig">
    // 	    <animal>
    // 	        <name>Molly II</name>
    // 	        <birth>February, 1998</birth>
    // 			<in-date>January, 2000</in-date>
    // 			<from>Middle Ave.</from>
    // 			<gender spay-neuter="yes">F</gender>
    // 			<info>Molly came from a place where an old, ill man had too many animals.
    // 	              	The animals were seldom fed and rats would eat the newborn piglets.
    // 	             	 When Molly was found at one week old, she was the only piglet of 
    // 	              	her siblings who did not get stepped on by a cow. She is a sweet, 
    // 	              	friendly pig who likes to hang out on Cathy's porch on the lounge 
    // 	              	pad.
    // 			</info>
    // 		</animal>
    // 	    <animal>
    // 			<name>Nigel</name>
    // 			<birth>June, 1991</birth>
    // 			<in-date>August, 1991</in-date>
    // 			<from>Breeder</from>
    // 			<gender spay-neuter="no">M</gender>
    // 			<info>
    // 			 	Nigel was the first pig and the reason for the rescue in the
    // 			 	first place. He is 13 now and doing well, but takes a number 
    // 				of medications, as you can see below.
    // 			</info>
    // 		</animal>		
    // 	</species>
    //   </herd>
    // </pig-rescue>

    // The sbState is an object used to keep track of the current state of the traversal.
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbState
    If (Not(IsComObjectCreated(hoSbState))) Begin
        Send CreateComObject of hoSbState
    End
    Get pvComObject of hoSbState to vSbState
    While ((ComNextInTraversal2(hoXml, vSbState)) <> False)

        Get ComTag Of hoXml To sTemp1
        Showln sTemp1
        Get ComTagPath Of hoXml To sTemp1
        Showln sTemp1
        Showln ""

    Loop

    // Produces the following output:

    // herd
    // herd
    // 
    // species
    // herd|species
    // 
    // animal
    // herd|species|animal[0]
    // 
    // name
    // herd|species|animal[0]|name
    // 
    // birth
    // herd|species|animal[0]|birth
    // 
    // in-date
    // herd|species|animal[0]|in-date
    // 
    // from
    // herd|species|animal[0]|from
    // 
    // gender
    // herd|species|animal[0]|gender
    // 
    // info
    // herd|species|animal[0]|info
    // 
    // animal
    // herd|species|animal[1]
    // 
    // name
    // herd|species|animal[1]|name
    // 
    // birth
    // herd|species|animal[1]|birth
    // 
    // in-date
    // herd|species|animal[1]|in-date
    // 
    // from
    // herd|species|animal[1]|from
    // 
    // gender
    // herd|species|animal[1]|gender
    // 
    // info
    // herd|species|animal[1]|info
    // 


End_Procedure