[Raku LibXML Project] / [LibXML Module] /
LibXML - Raku bindings to the libxml2 native library
use LibXML;
use LibXML::Document;
my LibXML::Document $doc .= parse: :string('<Hello/>');
$doc.root.nodeValue = 'World!';
say $doc.Str;
# <?xml version="1.0" encoding="UTF-8"?>
# <Hello>World!</Hello>
say $doc<Hello>;
# <Hello>World!</Hello>
my Version $library-version = LibXML.version;
my Version $module-version = LibXML.^ver;
This module is an interface to libxml2, providing XML and HTML parsers with DOM, SAX and XMLReader interfaces, a large subset of DOM Layer 3 interface and a XML::XPath-like interface to XPath API of libxml2.
For further information, please check the following documentation:
The nodes in the Document Object Model (DOM) are represented by the following classes (most of which "inherit" from LibXML::Node):
-
LibXML::Document - LibXML DOM document class
-
LibXML::Attr - LibXML attribute class
-
LibXML::CDATA - LibXML class for DOM CDATA sections
-
LibXML::Comment - LibXML class for comment DOM nodes
-
LibXML::DocumentFragment - LibXML's DOM L2 Document Fragment implementation
-
LibXML::Dtd - LibXML front-end for DTD validation
-
LibXML::Element - LibXML class for element nodes
-
LibXML::EntityRef - LibXML class for entity references
-
LibXML::Namespace - LibXML namespaces (Inherits from LibXML::Item)
-
LibXML::Node - LibXML DOM abstract base node class
-
LibXML::Text - LibXML text node class
-
LibXML::PI - LibXML DOM processing instruction nodes
See also LibXML::DOM, which summarizes DOM classes and methods.
-
LibXML::Attr::Map - LibXML DOM attribute map class
-
LibXML::Node::List - Sibling Node Lists
-
LibXML::Node::Set - XPath Node Sets
-
LibXML::HashMap - LibXML Hash Bindings
-
LibXML::Parser - LibXML Parser bindings
-
LibXML::PushParser - LibXML Push Parser bindings
-
LibXML::Reader - LibXML Reader (pull parser) bindings
-
LibXML::SAX::Builder - Builds SAX callback sets
-
LibXML::SAX::Handler::SAX2 - SAX handler base class
-
LibXML::SAX::Handler::XML - SAX Handler for XML
-
LibXML::XPath::Expression - XPath Compiled Expressions
-
LibXML::XPath::Context - XPath Evaluation Contexts
-
LibXML::Pattern - LibXML Patterns
-
LibXML::RegExp - LibXML Regular Expression bindings
-
LibXML::Dtd - LibXML DTD validation class
-
LibXML::Schema - LibXML schema validation class
-
LibXML::RelaxNG - LibXML RelaxNG validation class
-
LibXML::Config - LibXML global and local configuration
-
LibXML::Enums - XML_* enumerated constants
-
LibXML::Raw - LibXML native interface
-
LibXML::ErrorHandling - LibXML class for Error handling
-
LibXML::InputCallback - LibXML class for Input callback handling
-
See also LibXML::Threads, for notes on threading and concurrency
This module may requires the libxml2 library to be installed. Please follow the instructions below based on your platform:
sudo apt-get install libxml2-dev
Additional packages (such as build-essential) may be required to enable make, C compilation and linking.
brew update
brew install libxml2
The Xcode package also needs to be installed to enable compilation.
This module uses prebuilt DLLs on Windows. There are currently some configuration (LibXML::Config
) restrictions:
-
parser-locking
is setTrue
to to disable concurrent parsing. This is due to known threading issues and unresolved failures int/90threads.t
-
iconv
isFalse
. The library is built without full Unicode support, which restricts the ability to read and write various encoding schemes. -
compression
isFalse
. The library is built without full compression, and is unable to read and write compressed XML directly.
This Raku module:
-
is based on the Perl XML::LibXML module; in particular, the test suite, selected XS and C code and documentation.
-
derives SelectorQuery() and SelectorQueryAll() methods from the Perl XML::LibXML::QuerySelector module.
-
also draws on an earlier attempt at a Perl 6 (nee Raku) port (XML::LibXML).
With thanks to: Christian Glahn, Ilya Martynov, Matt Sergeant, Petr Pajas, Shlomi Fish, Toby Inkster, Tobias Leich, Xliff, and others.
2001-2007, AxKit.com 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 http://www.perlfoundation.org/artistic_license_2_0.