哪个Perl XML解析器可以将数据添加到特定节点?

fix*_*xer 0 xml perl

我需要在Perl中的特定节点的XML文件中添加几行.因此,我需要搜索特定节点,然后添加这些行.你会为此推荐哪种解析器?

too*_*lic 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);
}  
Run Code Online (Sandbox Code Playgroud)

  • 我理解你的处理程序只是一个例子,但如果你不知道:你也可以使用$ art-> suffix('你是你'); 哦,XML :: Twig-> new(...)比不推荐使用的新XML :: Twig更受欢迎.但我喜欢挑剔: - ) (2认同)
  • 我很高兴你喜欢挑剔!我没有意识到这两点.我将修复构造函数调用,但保留后缀...只是让OP看到TIMTOWTDI.谢谢. (2认同)