使用perl / python更改ivy.xml中的rev值

时间:2012-10-01 22:59:55

标签: python xml perl ivy

需要在构建之前动态更改ivy.xml中的rev =“{rev}”。我试图使用Perl XML:Simple模块,但输出是不可接受的。在依赖项部分,我得到:

<dependencies name="dependency">
  <poi org="ossjava" rev="3.6.0" />
</dependencies>

的instea
<dependencies>
       <dependency org="ossjava" name="poi" rev="3.6.0"/>
</dependencies>

请帮忙! Python代码片段也足够了

1 个答案:

答案 0 :(得分:1)

XML :: Simple具有讽刺意味的是使用最复杂的XML模块。您需要指定一个空的KeyAttr参数。

无论如何,我会用:

use XML::LibXML qw( );

my $qfn = 'ivy.xml';

my $parser = XML::LibXML->new();
my $doc    = $parser->parse_file($qfn);
my $root   = $doc->documentElement();

for my $poi ($root->findnodes('//poi')) {
   $poi->setAttribute('rev', process($poi->getAttribute('rev')));
}

$doc->toFile($qfn);