Lua
Lua
XML SearchForTag Method
See more XML Examples
Demonstrates 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>
Chilkat Lua Downloads
local chilkat = require("chilkat")
local xml = chilkat.Xml.new()
-- The sample input XML is available at http://www.chilkatsoft.com/data/fruitSearch.xml
local success = xml:load_xml_file("qa_data/xml/fruitSearch.xml")
if not success then
print(xml.last_error_text)
return
end
-- Search the sub-tree rooted at "searchRoot";
local xSearchRoot = xml:find_child("searchRoot")
-- Search for all nodes having the tag "fruit";
local xBeginAfter = xSearchRoot:get_self()
local xFound = xSearchRoot:search_for_tag(xSearchRoot, "fruit")
while xSearchRoot.last_method_success do
print(xFound.content)
xBeginAfter = xFound
xFound = xSearchRoot:search_for_tag(xBeginAfter, "fruit")
end
print("--------------------------")
-- ---------------------------------------------------------------------------------
-- Now do the same, but instead use SearchForTag2
-- which updates the internal reference of the caller instead
-- of returning the found node.
xBeginAfter = xSearchRoot:get_self()
local xSearch = xSearchRoot:get_self()
success = xSearch:search_for_tag2(xBeginAfter, "fruit")
while success do
print(xSearch.content)
-- Copy the internal references so that the next search
-- begins after the found node.
xBeginAfter:copy_ref(xSearch)
xSearch:copy_ref(xSearchRoot)
success = xSearch:search_for_tag2(xBeginAfter, "fruit")
end