The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

XML::Easy - XML processing with a clean interface

DESCRIPTION

XML::Easy is a collection of modules relating to the processing, parsing, and serialisation of XML data. It is oriented towards the use of XML to represent data for interchange purposes, rather than the use of XML as markup of principally textual data. It does not perform any schema processing, and does not interpret DTDs or any other kind of schema. It adheres strictly to the XML specification, in all its awkward details, except for the aforementioned DTDs.

XML::Easy strictly separates the in-program manipulation of XML data from the processing of the textual form of XML. This shields the XML user from the inconvenient and obscure aspects of XML syntax. XML data nodes are mainly processed in a clean functional style, using the XML::Easy::NodeBasics module. In the (very likely) event that an application requires some more purpose-specific XML data processing facilities, they are readily built on top of XML::Easy::NodeBasics, retaining the abstraction from textual XML.

When XML must be handled in textual form, for input and output, the XML::Easy::Text module supplies a parser and a serialiser. The interfaces here, too, are functional in nature.

There are other modules for some ancillary aspects of XML processing.

MODULES

The modules in the XML::Easy distribution are:

XML::Easy

This document. For historical reasons, this can also be loaded as a module, and some of the functions from XML::Easy::Text can be imported from here.

XML::Easy::Classify

This module provides various type-testing functions, relating to data types used in the XML::Easy ensemble. These are mainly intended to be used to enforce validity of data being processed by XML-related functions. They do not generate exceptions themselves, but of course type enforcement code can be built using these predicates.

XML::Easy::Content
XML::Easy::Element

These are classes used to represent XML data in an abstract form. Objects of these classes are completely isolated from the textual representation of XML, holding only the meaningful content of the data. This is a suitable form for application code to manipulate an XML representation of application data.

XML::Easy::NodeBasics

This module supplies functions concerned with the fundamental manipulation of XML data nodes (content chunks and elements). The nodes are dumb data objects, best manipulated using plain functions such as the ones in this module.

XML::Easy::Syntax

This module supplies Perl regular expressions encompassing the grammar of XML 1.0, except for document type declarations and DTDs. They can be used to construct an XML parser, but it is generally recommended to use a pre-existing parser (such as the one in XML::Easy::Text) when doing ordinary XML processing. This module is most useful when doing irregular things with XML.

XML::Easy::Text

This module supplies functions that parse and serialise XML data as text according to the XML 1.0 specification. The functions are implemented in C for performance, with a pure Perl backup version (which has good performance compared to other pure Perl parsers) for systems that can't handle XS modules.

OTHER DISTRIBUTIONS

The XML::Easy::ProceduralWriter module provides a way to build up XML data nodes by procedural code. Some programmers will find this more comfortable than the functional style.

SEE ALSO

XML::Easy::Classify, XML::Easy::NodeBasics, XML::Easy::Syntax, XML::Easy::Text, http://www.w3.org/TR/REC-xml/

AUTHOR

Andrew Main (Zefram) <zefram@fysh.org>

COPYRIGHT

Copyright (C) 2008, 2009 PhotoBox Ltd

Copyright (C) 2009 Andrew Main (Zefram) <zefram@fysh.org>

LICENSE

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.