in reply to XML to HashRef and then to JSON
You can use XML::Rules and specify what tags do you want to keep as text. Something like this:
use strict; use XML::Rules; use Data::Dumper; my $parser = XML::Rules->new( stripspaces => 2, rules => { '_default' => 'as array', 'Publisher' => 'pass', 'Emphasis' => sub { my ($tag,$attr,$parser) = @_[0,1,4]; return $parser->ToXML($tag, $attr); } } ); print Dumper($parser->parse(\*DATA)); __DATA__ <Publisher> <UniqueDOI>978-3-642-123456</UniqueDOI> <ChapterInfo ChapterType="OriginalPaper"> <Title Language="En">Is Light Blue (<Emphasis Type="Italic">azzurr +o</Emphasis> o bianco) Color Name Universal in the Italian Language?< +/Title> </ChapterInfo> </Publisher>
You can specify a comma separated list of tags in place of the 'Emphasis' and if some other tags are not allowed to repeat, you may include 'their,names' => 'as is' in the rules hash.
Jenda
Enoch was right!
Enjoy the last years of Rome.
|
|---|