XML使用XML :: XPATH GET_NODELIST的特殊字符



我试图弄清为什么当我想到原始文本字符串时,我的结果中会在结果中获得XML特殊字符。

这是我的代码:

#!/usr/bin/perl
use strict;
use warnings;
use XML::XPath;
my $xp = XML::XPath->new(ioref => *DATA);
my $names = $xp->find('/category/event/@name');
foreach my $node ( $names->get_nodelist ) {
  print XML::XPath::XMLParser::as_string( $node ) . "n";
}
__DATA__
  <category name="a">
    <event name="cat1 > cat3" />  
    <event name="cat2" />  
    <event name="cat3" />  
    <event name="cat4" />  
    <event name="cat5" />  
  </category>

这是我的结果:

 name="cat1 &gt; cat3"
 name="cat2"
 name="cat3"
 name="cat4"
 name="cat5"

我想要的是:

 name="cat1 > cat3"
 name="cat2"
 name="cat3"
 name="cat4"
 name="cat5"

看起来XML::XPath::XMLParser::as_string返回节点的XML表示。由于在这种情况下您有属性,因此您应该尝试使用getNodeValue获取值:

print $node->getNodeValue . "n";

对于元素和文本节点,看起来您可以使用$node->string_value

最新更新