Sample code for 30+ languages & platforms
PowerShell

Demonstrate XML SearchForTag2

Demonstrates how to use SearchForTag2.

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

$xml = New-Object Chilkat.Xml

# Load the following XML:

# 	<Test>
# 	    <testchild1>
# 	        test
# 	    </testchild1>
# 	    <testchild1>
# 	        test1
# 	    </testchild1>
# 	    <testchild1>
# 	        test2
# 	    </testchild1>
# 	    <testchild1>
# 	        test3
# 	    </testchild1>
# 	    <testchild1>
# 	        test4
# 	    </testchild1>
# 	    <testchild1>
# 	        test5
# 	    </testchild1>
# 	    <testchild1>
# 	        test6
# 	    </testchild1>
# 	</Test>

$success = $xml.LoadXml("<Test><testchild1>test</testchild1><testchild1>test1</testchild1><testchild1>test2</testchild1><testchild1>test3</testchild1><testchild1>test4</testchild1><testchild1>test5</testchild1><testchild1>test6</testchild1></Test>")

$i = 0
$xmlSearch = $xml.GetRoot()
$afterPtr = $xml.GetRoot()

# Alway begin the search from the root.
while ($xmlSearch.SearchForTag2($afterPtr,"testchild1")) {
    # If successful, xmlSearch now points to the found element.
    $i = $i + 1

    # Set afterPtr = xmlSearch (so we find the next match after the one we just found)
    # Rest xmlSearch to the root of the XML tree to be searched.
    $([string]$i + ": " + $xmlSearch.Content)
    $pTemp = $afterPtr
    $afterPtr = $xmlSearch
    $pTemp.GetRoot2()
    $xmlSearch = $pTemp
}

$("----")

# A better way:
$sbState = New-Object Chilkat.StringBuilder
$i = 0
while ($xml.NextInTraversal2($sbState) -ne $false) {
    if ($xml.TagEquals("testchild1") -eq $true) {
        $([string]$i + ": " + $xml.Content)
        $i = $i + 1
    }

}

$xml.GetRoot2()