note
haukex
<blockquote><i>I am looking forward to your answer to the OP's question based on <c>XML::Rules</c>.</i></blockquote>
<p>I've posted about [mod://XML::Rules] as a replacement for XML::Simple before: [id://1190869], [id://1204118]. The following at least generates a consistent Perl data structure, and can be adapted as needed.</p>
<c>
use warnings;
use strict;
use XML::Rules;
use Data::Dump;
my $parser = XML::Rules->new(
stripspaces => 3|4,
rules => [ _default => 'raw' ],
);
dd $parser->parse(<<'ENDXML');
<xmltop>
<xmlbody>
<tag1>jdjdjdjd</tag1>
<tag2>dkdkkd</tag2>
</xmlbody>
</xmltop>
ENDXML
__END__
[
"xmltop",
{
_content => [
[
"xmlbody",
{
_content => [
["tag1", { _content => "jdjdjdjd" }],
["tag2", { _content => "dkdkkd" }],
],
},
],
],
},
]
</c>
<p><i>Update:</i> One possible caveat here is that if an XML element has an attribute <c>_content</c>, then its value will be prepended to the node's text content.</p>
1232000
1232005