我是Stack溢出的新手,这是我的第一个问题。 [如果我在任何地方都错了,请纠正]
现在我要做的是:
<build>
的标签。在此,我想复制最新的标签1000并编辑并粘贴1001 <build>
标签。<version>
的属性,我每次创建构建时都必须更新,然后在同一个文件中复制相同的新构建标记,即在<build>
标记处添加abc.xml
标记{1}}档案。因此,简而言之,我必须复制最后一个记录,即1000个<build>
标记,并使用最新版本在<tag>
属性中进行编辑,并将其粘贴到标记为1001 <build>
标记的同一文件中
<root>
<build number="1000">
<tag verison="xx.yy" />
</build>
<!-- new tag -->
<build number="1001">
<tag version="xx.zz" />
</build>
</root>
这是我必须在创建构建期间手动执行的任务。所以请让我知道如何实现它,然后可以考虑将来自动化它。
答案 0 :(得分:0)
由于您没有标记某种语言,我将使用perlish解决方案。 Perl拥有优秀的gsub("[]", "", p1)
库,这对于这类事情非常有用。
在这段代码中,我们为每个XML::Twig
元素设置一个处理程序,它计算出最高的内部版本号,并存储对该元素的引用。一旦它处理完整个XML,我们知道我们已经看过整个事情,所以我们复制它,增加数字,然后粘贴它。
像这样:
build
打印哪些:
use strict;
use warnings;
use XML::Twig;
my $last_build;
my $build_number;
sub update_build {
my ( $twig, $build ) = @_;
if ( not defined $build_number
or $build -> att('number') > $build_number ) {
$last_build = $build;
$build_number = $build -> att('number');
}
}
my $twig = XML::Twig -> new ( pretty_print => 'indented',
twig_handlers => { 'build' => \&update_build }, ) -> parse ( \*DATA );
my $new_build = $last_build -> copy;
$new_build -> set_att('number', ++$build_number );
$new_build -> paste ( after => $last_build );
$twig -> print;
__DATA__
<root>
<build number="1000">
<tag verison="xx.yy" />
</build>
<build number="1001">
<tag version="xx.zz" />
</build>
</root>