【发布时间】:2017-07-16 14:00:51
【问题描述】:
我想弄清楚为什么当我想要原始文本字符串时,我的结果中会出现 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 > cat3"
name="cat2"
name="cat3"
name="cat4"
name="cat5"
我想要的是这个:
name="cat1 > cat3"
name="cat2"
name="cat3"
name="cat4"
name="cat5"
【问题讨论】:
-
我不知道该 API,但尝试打印
$node->getNodeValue()而不是节点本身的字符串表示形式。 -
感谢您的回复。我今天意识到我没有跟进这篇文章。出于某种原因,XML:Xpath 对我来说非常非常慢。相反,我使用 XML:Twig 来导航我的 XML 和最终的 XHTML 文件。这速度更快,并为我提供了我需要的结果。