【发布时间】:2018-10-04 08:59:23
【问题描述】:
这会打印 100 个 WOW,但不会在 toString 中打印一个 WOW。为什么?
for my $node ( $body->findnodes('//a') ) {
$node->setAttribute( 'href', "WOW" );
}
for my $node ( $body->findnodes('//a') ) {
print $node->getAttribute('href');
}
print $body->toString(2);
【问题讨论】:
-
$body是什么类型的对象,它访问的数据是什么。
-
您在整个文档中搜索
a元素(因为您使用//a而不是.//a或descendant::a),文档中可能有100 个a元素,但没有一个是$body的后代。但我们无法确定,因为您没有证明您遇到的问题。请提供一个最小的、可运行的问题演示。 (见minimal reproducible example。) -
请注意,在您的 sn-p 前面加上
use XML::LibXML; my $doc = XML::LibXML->new->parse_string('<body><a></a><a></a></body>'); my $body = $doc;或use XML::LibXML; my $doc = XML::LibXML->new->parse_string('<body><a></a><a></a></body>'); my ($body) = $doc->findnodes('body');不会产生您声明的输出。
标签: perl xml-attribute xml-libxml