Sample code for 30+ languages & platforms
Zig

Benefit of XML Methods Having Names Ending in "2"

See more XML Examples

The Chilkat XML methods having names ending with "2" update the internal reference rather than return a new XML object instance. See the example below..

Note: There are a few methods, such as LoadXml2, where the "2" simply indicates the method is the same but has an additional argument. (There are some programming environments where overloading methods is not allowed. Therefore, Chilkat will avoid providing methods having the same name but with different arguments.)

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    const x = "<test><abc><xyz>123</xyz></abc></test>";

    const xml = try chilkat.Xml.init();
    defer xml.deinit();

    try xml.loadXml(x);

    // First demonstrate getting "123" in the simplest way:
    std.debug.print("{s}\n", .{try xml.chilkatPath(alloc, "abc|xyz|*")});

    // Now demonstrate navigating to the "xyz" node using non-"2" methods.
    // The following few lines of code create two object instances, which will need
    // to be deleted or garbage collected.
    const x_abc = try xml.findChild("abc");
    defer x_abc.deinit();
    const x_xyz = try x_abc.findChild("xyz");
    defer x_xyz.deinit();
    std.debug.print("{s}\n", .{try x_xyz.getContent(alloc)});

    // Now demonstrate navigating to the "xyz" node using the "2" methods.
    // No object instances are created.
    try xml.findChild2("abc");
    try xml.findChild2("xyz");
    std.debug.print("{s}\n", .{try xml.getContent(alloc)});
    // Restore xml back to the root of the document.
    xml.getRoot2();
}