PerlLibXML在循环中添加节点



我试图将一个文档中的节点添加到我创建的新文档中,但它不起作用,我不知道为什么。这是出错的代码:

my ($body_node) = $newdoc->findnodes('//body');
my @nodes = $source_doc->findnodes('//div[starts-with(@psname, "xyz")]');
foreach my $node(@nodes) {
$body_node = $body_node->appendChild($node);
}
$newdoc->toFile($outfile);

该代码查找一些命名的div标记,并将它们附加到body标记中。问题是它将它们附加到最后一个div标记,而不是body标记,所以我最终得到了一堆嵌套的div:

</div></div></div></div></div></div></div></div></div></div></div></div> 
</div></div></div></div></div></div></div></div></div></div></div></div></body></html>

如果有人能告诉我我做错了什么,我将永远感激。

这意味着您可能需要在添加<div>:之后返回<body>

my ($body_node) = $newdoc->findnodes('//body');
my @nodes = $source_doc->findnodes('//div[starts-with(@psname, "xyz")]');
foreach my $node(@nodes) {
$body_node = $body_node->appendChild($node);
($body_node) = $newdoc->findnodes('//body');
}
open (OUT, ">$outfile");
print OUT $newdoc->toString();
close OUT;

相关内容

  • 没有找到相关文章

最新更新