Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Tcl) Traverse Direct Children via FirstChild / NextSibling, or LastChild / PreviousSiblingDemonstrates some ways to iterate over direct child nodes using the FirstChild / NextSibling and LastChild / PreviousSibling methods. 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>
load ./chilkat.dll set xml [new_CkXml] # child is a CkXml # nextSibling is a CkXml # prevSibling is a CkXml set success [CkXml_LoadXmlFile $xml "qa_data/xml/fruit.xml"] if {$success != 1} then { puts [CkXml_lastErrorText $xml] delete_CkXml $xml exit } # Iterate over the direct children by using FirstChild / NextSibling set child [CkXml_FirstChild $xml] set bContinue [CkXml_get_LastMethodSuccess $xml] while {$bContinue == 1} { puts [CkXml_tag $child] : [CkXml_content $child] set nextSibling [CkXml_NextSibling $child] set bContinue [CkXml_get_LastMethodSuccess $child] delete_CkXml $child set child $nextSibling } puts "-----" # Do the same, but with FirstChild2 / NextSibling2 to avoid # creating so many XML object instances: set success [CkXml_FirstChild2 $xml] while {$success == 1} { puts [CkXml_tag $xml] : [CkXml_content $xml] set success [CkXml_NextSibling2 $xml] } # Revert back up to the parent: set success [CkXml_GetParent2 $xml] puts "-----" # Iterate in reverse order using LastChild / PreviousSibling set child [CkXml_LastChild $xml] set bContinue [CkXml_get_LastMethodSuccess $xml] while {$bContinue == 1} { puts [CkXml_tag $child] : [CkXml_content $child] set prevSibling [CkXml_PreviousSibling $child] set bContinue [CkXml_get_LastMethodSuccess $child] delete_CkXml $child set child $prevSibling } puts "-----" # Do the same, but with LastChild2 / PreviousSibling2 to avoid # creating so many XML object instances: set success [CkXml_LastChild2 $xml] while {$success == 1} { puts [CkXml_tag $xml] : [CkXml_content $xml] set success [CkXml_PreviousSibling2 $xml] } # Revert back up to the parent: set success [CkXml_GetParent2 $xml] delete_CkXml $xml |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.