我需要在Perl中的特定节点的XML文件中添加几行。因此,我需要搜索特定节点,然后添加这些行。你会为此推荐哪种解析器?
答案 0 :(得分:5)
我建议XML::Twig。它可以修改某个名称的所有元素,也可以只修改一个元素。它有很好的文档,包括教程......模块作者总是随叫随到:)
这是一个简单的例子,它会将一些文本附加到名为“article”的所有元素:
use strict;
use warnings;
use XML::Twig;
my $xmlStr = <<XML;
<foo>
<article>ME ME ME</article>
<article>HE HE</article>
<particle>ME TOO</particle>
</foo>
XML
my $twig= XML::Twig->new(
twig_handlers => { article => \&article }
);
$twig->parse($xmlStr);
$twig->print();
print "\n";
exit;
sub article {
my ($twig, $art) = @_;
my $stuff = $art->text(); # get the text of article
$stuff .= ' YOU YOU YOU';
$art->set_text($stuff);
}