XML::MyXML - A simple-to-use XML module, for parsing and creating XML documents
Version 0.098
use XML::MyXML qw(tidy_xml xml_to_object); use XML::MyXML qw(:all); my $xml = "<item><name>Table</name><price><usd>10.00</usd><eur>8.50</eur></price></item>"; print tidy_xml($xml); my $obj = xml_to_object($xml); print "Price in Euros = " . $obj->path('price/eur')->value; $obj->simplify is hashref { item => { name => 'Table', price => { usd => '10.00', eur => '8.50' } } } $obj->simplify({ internal => 1 }) is hashref { name => 'Table', price => { usd => '10.00', eur => '8.50' } }
tidy_xml, xml_to_object, object_to_xml, simple_to_xml, xml_to_simple, check_xml
A simple-to-use XML module, for parsing and creating XML documents
This module can parse XML comments, CDATA sections, XML entities (the standard five and numeric ones) and simple non-recursive <!ENTITY>s
<!ENTITY>
It will ignore (won't parse) <!DOCTYPE...>, <?...?> and other <!...> special markup
<!DOCTYPE...>
<?...?>
<!...>
Parsed documents must be UTF-8 encoded, as will all XML documents produced by this module be
XML documents to be parsed may not contain the > character unencoded in attribute values
>
Some functions and methods in this module accept optional flags, listed under each function in the documentation. They are optional, default to zero unless stated otherwise, and can be used as follows: &function_name( $param1, { flag1 => 1, flag2 => 1 } ). This is what each flag does:
&function_name( $param1, { flag1 => 1, flag2 => 1 } )
strip : the function will strip initial and ending whitespace from all text values returned
strip
file : the function will expect the path to a file containing an XML document to parse, instead of an XML string
file
complete : the function's XML output will include an XML declaration (<?xml ... ?>) in the beginning
complete
<?xml ... ?>
soft : the function will return undef instead of dying in case of an error during XML parsing
soft
internal : the function will only return the contents of an element in a hashref instead of the element itself (see "SYNOPSIS" for example)
internal
tidy : the function will return tidy XML
tidy
indentstring : when producing tidy XML, this denotes the string with which child elements will be indented (Default is the 'tab' character)
indentstring
save : the function (apart from doing what it's supposed to do) will also save its XML output in a file whose path is denoted by this flag
save
strip_ns : strip the namespaces (characters up to and including ':') from the tags
strip_ns
xslt : will add a <?xml-stylesheet?> link in the XML that's being output, of type 'text/xsl', pointing to the filename or URL denoted by this flag
xslt
arrayref : the function will create a simple arrayref instead of a simple hashref (which will preserve order and elements with duplicate tags)
arrayref
utf8 : the strings which will be returned will have their utf8 flag set (defaults to 0 for compatibility with software built with older versions of this module). The way this module works is that it holds everything in byte format internally (even if you provide it with a utf8 XML string), and then produces utf8 strings or simple structures if (and only if) asked for with this flag. UTF is an important issue, please read perldoc utf8 for more.
utf8
perldoc utf8
Returns the XML string in a tidy format (with tabs & newlines)
Optional flags: file, complete, indentstring, soft, save, utf8
Creates an 'XML::MyXML::Object' object from the raw XML provided
Optional flags: file, soft
Creates an XML string from the 'XML::MyXML::Object' object provided
Optional flags: complete, tidy, indentstring, save, utf8
Produces a raw XML string from either an array reference, a hash reference or a mixed structure such as these examples:
{ thing => { name => 'John', location => { city => 'New York', country => 'U.S.A.' } } } [ thing => [ name => 'John', location => [ city => 'New York', country => 'U.S.A.' ] ] ] { thing => { name => 'John', location => [ city => 'New York', city => 'Boston', country => 'U.S.A.' ] } }
Optional flags: complete, tidy, indentstring, save, xslt, utf8
Produces a very simple hash object from the raw XML string provided. An example hash object created thusly is this: { thing => { name => 'John', location => { city => 'New York', country => 'U.S.A.' } } }
{ thing => { name => 'John', location => { city => 'New York', country => 'U.S.A.' } } }
Since the object created is a hashref, duplicate keys will be discarded. WARNING: This function only works on very simple XML strings, i.e. children of an element may not consist of both text and elements (child elements will be discarded in that case)
Optional flags: internal, strip, file, soft, strip_ns, arrayref, utf8
Returns 1 if the $raw_xml string is valid XML (valid enough to be used by this module), and 0 otherwise.
Optional flags: file
Returns the element specified by the path as an XML::MyXML::Object object. When there are more than one tags with the specified name in the last step of the path, it will return all of them as an array. In scalar context will only return the first one.
When the element represented by the $obj object has only text contents, returns those contents as a string. If the $obj element has no contents, value will return an empty string.
Optional flags: strip, utf8
Returns the value of the 'attrname' attribute of the top element. Returns undef if attribute does not exist.
Optional flags: utf8
Returns the tag of the $obj element (after stripping it from namespaces). E.g. if $obj represents an <rss:item> element, $obj->tag will just return the name 'item'. Returns undef if $obj doesn't represent a tag.
$obj->tag
Returns a very simple hashref, like the one returned with &XML::MyXML::xml_to_simple. Same restrictions and warnings apply.
Optional flags: internal, strip, strip_ns, arrayref, utf8
Returns the XML string of the object, just like calling &object_to_xml( $obj )
&object_to_xml( $obj )
Returns the XML string of the object in tidy form, just like calling &tidy_xml( &object_to_xml( $obj ) )
&tidy_xml( &object_to_xml( $obj ) )
Optional flags: complete, indentstring, save, utf8
Deletes the object and all its children from memory. This is the only way to remove an XML object from memory and clear the RAM, since children and parents refer to each other circularly.
The way it works is by removing references from the object's descendants to their parents.
Alexander Karelas, <karjala at karjala.org>
<karjala at karjala.org>
Please report any bugs or feature requests to bug-xml-myxml at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=XML-MyXML. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-xml-myxml at rt.cpan.org
You can find documentation for this module with the perldoc command.
perldoc XML::MyXML
You can also look for information at:
AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/XML-MyXML
CPAN Ratings
http://cpanratings.perl.org/d/XML-MyXML
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=XML-MyXML
Search CPAN
http://search.cpan.org/dist/XML-MyXML
Module's RSS feed
http://myperl.eu/permodule/XML-MyXML
Copyright 2006-2007 Alexander Karelas, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install XML::MyXML, copy and paste the appropriate command in to your terminal.
cpanm
cpanm XML::MyXML
CPAN shell
perl -MCPAN -e shell install XML::MyXML
For more information on module installation, please visit the detailed CPAN module installation guide.