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
(AutoIt) 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>
$oXml = ObjCreate("Chilkat.Xml") Local $oChild Local $oNextSibling Local $oPrevSibling Local $bSuccess = $oXml.LoadXmlFile("qa_data/xml/fruit.xml") If ($bSuccess <> True) Then ConsoleWrite($oXml.LastErrorText & @CRLF) Exit EndIf ; Iterate over the direct children by using FirstChild / NextSibling $oChild = $oXml.FirstChild() Local $bContinue = $oXml.LastMethodSuccess While ($bContinue = True) ConsoleWrite($oChild.Tag & " : " & $oChild.Content & @CRLF) $oNextSibling = $oChild.NextSibling() $bContinue = $oChild.LastMethodSuccess $oChild = $oNextSibling Wend ConsoleWrite("-----" & @CRLF) ; Do the same, but with FirstChild2 / NextSibling2 to avoid ; creating so many XML object instances: $bSuccess = $oXml.FirstChild2() While $bSuccess = True ConsoleWrite($oXml.Tag & " : " & $oXml.Content & @CRLF) $bSuccess = $oXml.NextSibling2() Wend ; Revert back up to the parent: $bSuccess = $oXml.GetParent2() ConsoleWrite("-----" & @CRLF) ; Iterate in reverse order using LastChild / PreviousSibling $oChild = $oXml.LastChild() $bContinue = $oXml.LastMethodSuccess While ($bContinue = True) ConsoleWrite($oChild.Tag & " : " & $oChild.Content & @CRLF) $oPrevSibling = $oChild.PreviousSibling() $bContinue = $oChild.LastMethodSuccess $oChild = $oPrevSibling Wend ConsoleWrite("-----" & @CRLF) ; Do the same, but with LastChild2 / PreviousSibling2 to avoid ; creating so many XML object instances: $bSuccess = $oXml.LastChild2() While $bSuccess = True ConsoleWrite($oXml.Tag & " : " & $oXml.Content & @CRLF) $bSuccess = $oXml.PreviousSibling2() Wend ; Revert back up to the parent: $bSuccess = $oXml.GetParent2() |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.