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
(DataFlex) XML SearchForTag MethodDemonstrates the SearchForTag and SearchForTag2 methods. The input XML, available at http://www.chilkatsoft.com/data/fruitSearch.xml, is this: <root> <searchRoot> <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> </searchRoot> <fruit color="red">strawberry</fruit> <fruit color="orange">peach</fruit> </root>
Use ChilkatAx-win32.pkg Procedure Test Handle hoXml Variant vXSearchRoot Handle hoXSearchRoot Variant vXBeginAfter Handle hoXBeginAfter Variant vXFound Handle hoXFound Boolean iSuccess Variant vXSearch Handle hoXSearch String sTemp1 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/fruitSearch.xml Get ComLoadXmlFile Of hoXml "qa_data/xml/fruitSearch.xml" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoXml To sTemp1 Showln sTemp1 Procedure_Return End // Search the sub-tree rooted at "searchRoot" Get ComFindChild Of hoXml "searchRoot" To vXSearchRoot If (IsComObject(vXSearchRoot)) Begin Get Create (RefClass(cComChilkatXml)) To hoXSearchRoot Set pvComObject Of hoXSearchRoot To vXSearchRoot End // Search for all nodes having the tag "fruit" Get ComGetSelf Of hoXSearchRoot To vXBeginAfter If (IsComObject(vXBeginAfter)) Begin Get Create (RefClass(cComChilkatXml)) To hoXBeginAfter Set pvComObject Of hoXBeginAfter To vXBeginAfter End Get ComSearchForTag Of hoXSearchRoot vXSearchRoot "fruit" To vXFound If (IsComObject(vXFound)) Begin Get Create (RefClass(cComChilkatXml)) To hoXFound Set pvComObject Of hoXFound To vXFound End While ((ComLastMethodSuccess(hoXSearchRoot)) = True) Get ComContent Of hoXFound To sTemp1 Showln sTemp1 Send Destroy of hoXBeginAfter Move hoXFound To hoXBeginAfter Get ComSearchForTag Of hoXSearchRoot vXBeginAfter "fruit" To vXFound If (IsComObject(vXFound)) Begin Get Create (RefClass(cComChilkatXml)) To hoXFound Set pvComObject Of hoXFound To vXFound End Loop Send Destroy of hoXBeginAfter Showln "--------------------------" // --------------------------------------------------------------------------------- // Now do the same, but instead use SearchForTag2 // which updates the internal reference of the caller instead // of returning the found node. Get ComGetSelf Of hoXSearchRoot To vXBeginAfter If (IsComObject(vXBeginAfter)) Begin Get Create (RefClass(cComChilkatXml)) To hoXBeginAfter Set pvComObject Of hoXBeginAfter To vXBeginAfter End Get ComGetSelf Of hoXSearchRoot To vXSearch If (IsComObject(vXSearch)) Begin Get Create (RefClass(cComChilkatXml)) To hoXSearch Set pvComObject Of hoXSearch To vXSearch End Get ComSearchForTag2 Of hoXSearch vXBeginAfter "fruit" To iSuccess While (iSuccess = True) Get ComContent Of hoXSearch To sTemp1 Showln sTemp1 // Copy the internal references so that the next search // begins after the found node. Send ComCopyRef To hoXBeginAfter vXSearch Send ComCopyRef To hoXSearch vXSearchRoot Get ComSearchForTag2 Of hoXSearch vXBeginAfter "fruit" To iSuccess Loop Send Destroy of hoXSearch Send Destroy of hoXBeginAfter Send Destroy of hoXSearchRoot End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.