Zig
Zig
Demonstrate XML SearchForTag2
Demonstrates how to use SearchForTag2.Chilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
const xml = try chilkat.Xml.init();
defer xml.deinit();
// 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>
try 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>");
var i: i32 = 0;
var xml_search: chilkat.Xml = try xml.getRoot();
defer xml_search.deinit();
var after_ptr: chilkat.Xml = try xml.getRoot();
defer after_ptr.deinit();
// Alway begin the search from the root.
while (if (xml_search.searchForTag2(after_ptr, "testchild1")) true else |_| false) {
// 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.
std.debug.print("{d}: {s}\n", .{ i, try xml_search.getContent(alloc) });
const p_temp = after_ptr;
after_ptr = xml_search;
p_temp.getRoot2();
xml_search = p_temp;
}
std.debug.print("----\n", .{});
// A better way:
const sb_state = try chilkat.StringBuilder.init();
defer sb_state.deinit();
i = 0;
while (xml.nextInTraversal2(sb_state)) {
if (xml.tagEquals("testchild1")) {
std.debug.print("{d}: {s}\n", .{ i, try xml.getContent(alloc) });
i = i + 1;
}
}
xml.getRoot2();
}