Я использую XML :: Twig для обработки этого XML:
<?xml version="1.0" encoding="UTF-8"?>
<termEntry>
<langSet lang="en">
<ntig>
<termGrp>
<term>trail</term>
<termNote type="partOfSpeech">noun</termNote>
</termGrp>
<descrip type="context">Like in a forest</descrip>
</ntig>
</langSet>
</termEntry>
Я использую следующий код для его обработки:
use strict;
use XML::Twig;
my $twig_handlers = {
termEntry => sub { for my $node($_[1]->findnodes('.//descrip|.//termNote')){print $node->text;}},
};
my $twig= new XML::Twig(
TwigRoots => { termEntry => 1},
TwigHandlers => $twig_handlers,
);
$twig->parsefile('C:\Users\me\file.xml');
Код не работает с:
error in xpath expression .//descrip|.//termNote around descrip|.//termNote at
C:\Users\nate\Desktop\test.pl line 6
Я пробовал разные вещи, и каждый раз, когда я использую '|' Символ в xpath нарушает работу программы. Это прекрасно работает на http://www.xpathtester.com (думал, что я заменю '.' На '//'). Есть идеи как это исправить?