Description
XML::Simple - Trivial API for reading and writing XML
(esp config files)
XML::Simple loads an XML file in memory, in a convenient
structure, that can be accessed and updated, then output
back.
A number of options allow users to specify how the
structure should be built. It can also be cached using
Data::Dumper
Why use XML::Simple?
- XML configuration files, small table,
data-oriented XML
- simple XML processing
- you don't care much about XML but find it
convenient as a standard file format, to replace
csv or a home-brewed format
Why NOT use XML::Simple?
- your XML data is too complex for XML::Simple to
deal with:
- it includes mixed content
(<elt>th<is>_</is>_ mixed content</elt>)
- your documents are too big to fit in memory
- you are dealing with XML documents
- you want to use a standard-based module
(XML::DOM for example)
Personal notes
I don't use XML::Simple in production but the module
seems quite mature, and very convenient for "light" XML:
config files, tables, generally data-oriented, shallow
XML (the XML tree is not really deep), as opposed to
document-oriented XML.
Update: make sure you read the documentation
about the forcearray option or you might get bitten
by repeated elements being turned into an array (which is OK)
_except_ when there is only one of them, in which case
they become just a hash value (bad!).
for example this document:
<config dir="/usr/local/etc" log="/usr/local/log">
<user id="user1">
<group>root</group>
<group>webadmin</group>
</user>
<user id="user2">
<group>staff</group>
</user>
</config>
when loaded with XMLin and not
forcearray option becomes
{ 'dir' => '/usr/local/etc',
'log' => '/usr/local/log',
'user' => {'user1' => {'group' => ['root', 'webadmin']},
'user2' => {'group' => 'staff'}
}
};
Note the 2 different ways the
group elements are processed.
I also found that XML::Simple can be a little dangerous in that
it leads to writing XML that is a little too simple. Often when
using it I end up with an XML structure that's as shallow as I can
possibly make it, which might not be really clean.
In reply to XML::Simple
by mirod
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.