NAME
XML::Parser::Style::ETree - Parse xml to simple tree
VERSION
Version 0.09
SYNOPSIS
use
XML::Parser;
my
$p
= XML::Parser->new(
Style
=>
'ETree'
);
EXAMPLE
<root at=
"key"
>
<nest>
first
<v>a</v>
mid
<v at=
"a"
>b</v>
<vv></vv>
last
</nest>
</root>
will be
{
root
=> {
'-at'
=>
'key'
,
nest
=> {
'#text'
=>
'firstmidlast'
,
vv
=>
''
,
v
=> [
'a'
,
{
'-at'
=>
'a'
,
'#text'
=>
'b'
}
]
}
}
}
SPECIAL VARIABLES
- $TEXT{ATTR} [ = '-' ]
-
Allow to set prefix for name of attribute nodes;
<item attr=
"value"
/>
# will be
item
=> {
-attr
=>
'value'
};
# with
$TEXT
{ATTR} =
'+'
;
# will be
item
=> {
'+attr'
=>
'value'
};
- $TEXT{NODE} [ = '#text' ]
-
Allow to set name for text nodes
<item><
sub
attr=
"t"
></
sub
>Text value</item>
# will be
item
=> {
sub
=> {
-attr
=>
"t"
},
#text => 'Text value' };
# with
$TEXT
{NODE} =
''
;
# will be
item
=> {
sub
=> {
-attr
=>
"t"
},
''
=>
'Text value'
};
- $TEXT{JOIN} [ = '' ]
-
Allow to set join separator for text node, splitted by subnodes
<item>Test1<
sub
/>Test2</item>
# will be
item
=> {
sub
=>
''
,
#text => 'Test1Test2' };
# with
$TEXT
{JOIN} =
'+'
;
# will be
item
=> {
sub
=>
''
,
#text => 'Test1+Test2' };
- $TEXT{TRIM} [ = 1 ]
-
Trim leading and trailing whitespace from text nodes
<item> Test1 <
sub
/> Test2 </item>
# will be
item
=> {
sub
=>
''
,
#text => 'Test1Test2' };
# with
$TEXT
{TRIM} = 0;
# will be
item
=> {
sub
=>
''
,
#text => ' Test1 Test2 ' };
- %FORCE_ARRAY
-
Allow to force nodes to be represented always as arrays. If name is empty string, then ot means ALL
<item><
sub
attr=
"t"
></
sub
>Text value</item>
# will be
item
=> {
sub
=> {
-attr
=>
"t"
},
#text => 'Text value' };
# with
$FORCE_ARRAY
{
sub
} = 1;
# will be
item
=> {
sub
=> [ {
-attr
=>
"t"
} ],
#text => 'Text value' };
# with
$FORCE_ARRAY
{
''
} = 1;
# will be
item
=> [ {
sub
=> [ {
-attr
=>
"t"
} ],
#text => 'Text value' } ];
- %FORCE_HASH
-
Allow to force text-only nodes to be represented always as hashes. If name is empty string, then ot means ALL
<item><
sub
>Text value</
sub
><any>Text value</any></item>
# will be
item
=> {
sub
=>
'Text value'
,
any
=>
'Text value'
};
# with
$FORCE_HASH
{
sub
} = 1;
# will be
item
=> {
sub
=> {
#text => 'Text value' }, any => 'Text value' };
# with
$FORCE_HASH
{
''
} = 1;
# will be
item
=> {
sub
=> {
#text => 'Text value' }, any => { #text => 'Text value' } };
- @STRIP_KEY
-
Allow to strip something from tag names by regular expressions
<a:item><b:
sub
>Text value</b:
sub
></a:item>
# will be
'a:item'
=> {
'b:sub'
=>
'Text value'
};
# with
@STRIP_KEY
= (
qr/^[^:]+:/
);
# will be
'item'
=> {
'sub'
=>
'Text value'
};
SEE ALSO
-
The parser itself
-
Another EasyTree (I didn't found it before my first commit of this package because of missing '::Style' in it's name)
But since XML::Parser::EasyTree and XML::Parser::Style::EasyTree use same style name, they're mutual exclusive ;(
So, all the functionality was moved to ETree, and EasyTree was kept as a compatibility wrapper
-
Very-very fast XML parser. Recommend to look
-
Similar behaviour, same output, but using XML::LibXML
AUTHOR
Mons Anderson, <mons at cpan.org>
BUGS
None known
COPYRIGHT & LICENSE
Copyright 2009 Mons Anderson
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.