View on GitHub


Raku bindings to the libxml2 native library

[Raku LibXML Project] / [LibXML Module] / SAX :: Builder

class LibXML::SAX::Builder

Builds SAX callback sets


This class provides mappings from native SAX2 callbacks to Raku.

It may be used in conjunction with LibXML::SAX::Handler::SAX2 base-class.


The following example builds a modified DOM tree with all tags and attributes converted to uppercase.

use LibXML::Document;
use LibXML::SAX::Builder;
use LibXML::SAX::Handler::SAX2;

class SAXShouter is LibXML::SAX::Handler::SAX2 {
    use LibXML::SAX::Builder :sax-cb;
    method startElement($name, |c) is sax-cb {
        nextwith($name.uc, |c);
    method endElement($name, |c) is sax-cb {
        nextwith($name.uc, |c);
    method characters($chars, |c) is sax-cb {
        nextwith($chars.uc, |c);

my SAXShouter $sax-handler .= new();
my $string = '<html><body><h1>Hello World</h1></body></html>'
my LibXML::Document $doc .= parse: :$string, :$sax-handler;
say $doc.Str;  # <HTML><BODY><H1>HELLO WORLD</H1></BODY></HTML>'

See LibXML::SAX::Handler::SAX2 for a description of callbacks

2001-2007, Ltd.

2002-2006, Christian Glahn.

2006-2009, Petr Pajas.


This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0