Usage
The 2 examples below are taken from zig-xml's README.
const xml = b.dependency("xml", .{ .target = target, .optimize = optimize });
your_module.addImport("xml", xml.module("xml"));
const std = @import("std");
const xml = @import("xml");
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const allocator = gpa.allocator();
var reader = xml.Reader.init(allocator, "<a href=\"?x=1&y=2\">hello</a>");
defer reader.deinit();
while (try reader.next()) |event| switch (event) {
.open, .self_closing => |element| {
std.debug.print("<{s}>\n", .{element.name});
for (element.attributes) |attr| {
// Attribute values are raw; decode when you need the text.
const value = try xml.decode(allocator, attr.value);
defer allocator.free(value);
std.debug.print(" {s} = {s}\n", .{ attr.name, value });
}
},
.text => |raw| {
const text = try xml.decode(allocator, raw);
defer allocator.free(text);
std.debug.print("text: {s}\n", .{text});
},
.close => |name| std.debug.print("</{s}>\n", .{name}),
else => {},
};
}