XML::Mini3pm
Perl implementation of the xml::mini xml create/parse interface.
Usage
use XML::Mini::Document;use Data::Dumper;###### PARSING XML ######## create a new objectmy $xmlDoc = XML::Mini::Document->new();# init the doc from an XML string$xmlDoc->parse($XMLString);# You may use the toHash() method to automatically# convert the XML into a hash referencemy $xmlHash = $xmlDoc->toHash();print Dumper($xmlHash);# You can also manipulate the elements like directly, like this:# Fetch the ROOT element for the document# (an instance of XML::Mini::Element)my $xmlRoot = $xmlDoc->getRoot();# play with the element and its children# ...my $topLevelChildren = $xmlRoot->getAllChildren();foreach my $childElement (@{$topLevelChildren}){# ...}###### CREATING XML ######## Create a new document from scratchmy $newDoc = XML::Mini::Document->new();# This can be done easily by using a hash:my $h = {'spy' => {'id' => '007','type' => 'SuperSpy','name' => 'James Bond','email' => '[email protected]','address' => 'Wherever he is needed most',},};$newDoc->fromHash($h);# Or new XML can also be created by manipulating#elements directly:my $newDocRoot = $newDoc->getRoot();# create the <? xml ?> headermy $xmlHeader = $newDocRoot->header('xml');# add the version$xmlHeader->attribute('version', '1.0');my $person = $newDocRoot->createChild('person');my $name = $person->createChild('name');$name->createChild('first')->text('John');$name->createChild('last')->text('Doe');my $eyes = $person->createChild('eyes');$eyes->attribute('color', 'blue');$eyes->attribute('number', 2);# output the documentprint $newDoc->toString();
This example would output :
<?xml version="1.0"?><person><name><first>John</first><last>Doe</last></name><eyes color="blue" number="2" /></person>
Overview
XML::Mini is a set of Perl classes that allow you to access XML data and create valid XML output with a tree-based hierarchy of elements. The MiniXML API has both Perl and PHP implementations.
It provides an easy, object-oriented interface for manipulating XML documents and their elements. It is currently being used to send requests and understand responses from remote servers in Perl or PHP applications. An XML::Mini based parser is now being tested within the RPC::XML framework.
XML::Mini does not require any external libraries or modules and is pure Perl. If available, XML::Mini will use the Text::Balanced module in order to escape limitations of the regex-only approach (eg "cross-nested" tag parsing).
The Mini.pm module includes a number of variables you may use to tweak XML::Mini's behavior. These include:
$XML::Mini::AutoEscapeEntities - when greater than 0, the values set for nodes are automatically escaped, thus $element->text('4 is > 3') will set the contents of the appended node to '4 is > 3'. Default setting is 1.
$XML::Mini::IgnoreWhitespaces - when greater than 0, extraneous whitespaces will be ignored (maily useful when parsing). Thus <mytag> Hello There </mytag> will be parsed as containing a text node with contents 'Hello There' instead of ' Hello There '. Default setting is 1.
$XML::Mini::CaseSensitive - when greater than 0, element names are treated as case sensitive. Thus, $element->getElement('subelement') and $element->getElement('SubElement') will be equivalent. Defaults to 0.
Class methods
escapeEntites TOENCODE
This method returns ToENCODE with HTML sensitive values (eg '<', '>', '"', etc) HTML encoded.
Log MESSAGE
Logs the message to STDERR
Error MESSAGE
Logs MESSAGE and exits the program, calling exit()
ignoreDeepRecursionWarning
XML::Mini uses deep recursion on big XML docs, this is normal. But the warnings are a pain. $XML::Mini::IgnoreDeepRecursionWarnings is set to TRUE by default, and ignoreDeepRecursionWarning() is called by XML::Mini::Document if it is set. To bypass this behavior,
use XML::Mini;$XML::Mini::IgnoreDeepRecursionWarnings = 0;use XML::Mini::Document;# ...
Releases
11 releases since Debian 3.1 (Sarge); the text changed 6 times.