Greetings Perl Monkers
I've been parsing some XML files using Perl and XML::Twig. I've got the bulk working but I need to parse a final, separate file just extracting out one bit of data. I can to it with xmllint on the command line using - xmllint --format portletEntities.xml --xpath '//*[@name="FilterName"]/*/text()' | sort | uniq
I'd like to get this to work in the Perl code so the values I pull from this search with the other data, in the example below I want "Name_of_filter". Using xmllint with //*[@name="FilterName"]the surrounding data looks like
<portletentities:adminPrefs name="FilterName" readOnly="false"><portletentities:value>Name_of_filter</portletentities:value></portletentities:adminPrefs>There 72 entries in raw, 56 unique. In Perl I'm trying this
130 sub parsepages { 131 my $filename = "portlentEntities.xml"; 132 133 my $p = XML::Twig->new( 134 twig_handlers => { 135 '//*[@name="FilterName"]/*/text()' => sub {$_->print} 136 }, 137 ); 138 139 $p->parsefile($filename); 140 }
Leads to this
unrecognized expression in handler: '//*[@name="FilterName"]/*/text()' at ./xmlp.pl line 137.In reply to Help debugging xpath in Perl by tweetiepooh
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |