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
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
|
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|