如何使用bash或perl更改XML中的参数值?

如何使用bash或perl更改XML中的参数值?,xml,perl,Xml,Perl,下面有一个xml,需要修改一些参数值 <test name="MyRawExample" preserve-order="true"> <parameter name="example-parameter" value="11111" /> <classes> <class name="com.ericol.nco.blocktests.example.ExampleTestcase" /> </cla

下面有一个xml,需要修改一些参数值

<test name="MyRawExample" preserve-order="true">
    <parameter name="example-parameter" value="11111" />
    <classes>
        <class name="com.ericol.nco.blocktests.example.ExampleTestcase" />
    </classes>
</test>
我需要寻找一个特定的参数名,然后用一个新的输入值替换相应的值,并更新xml文件

我想知道是否有人可以帮助我如何更改它或提供一个严格的文档,以便我可以找到最有效的脚本来完成这项工作

问候,,
贝扎德

正如莫蒂斯所提到的,你应该首先努力解决这个问题

考虑到这一点,我们来看看Perl模块。它能让你轻松地做你想做的事

更新:由于您已经完成了一些工作并提出了一些代码,下面是一个可行的解决方案:

#!/usr/bin/perl -w
use strict;
use XML::Twig;

my $twig=XML::Twig->new(   
    twig_handlers => { 
        parameter  => sub {
            if ($_->att('name') eq 'example-parameter') {
                $_->set_att('value' => '22222') 
            }
        }
    },
    pretty_print => 'indented',
);

$twig->parsefile('src/main/resources/exampleSuite.xml');
$twig->flush;

我将让您来替换文件。

stackoverflow不是这样工作的。你向我们展示你到目前为止的编码,询问你遇到的特定问题,我们会尽力帮助你。我们不会为您编写脚本。例如,查找pratameter name示例参数,然后用22222更改相应的值标记。我尝试了下面的内容,但我没有任何参考资料,因此我可以将其润色以适合我所需的结果:awk-F=-v newval=22222'/parameter/{$2=newval;print;next}1'src/main/resources/exampleSuite.xml我尝试了以下方法,但得到了奇怪的结果:s/usr/bin/perl使用严格;使用警告;使用XML::Twig;Twig->new pretty\u print=>'indented',Twig\u handlers=>{name=>sub{$\->set\u text'example parameter'->flush if$->text eq'example parameter'},},-->parsefile\u inplace'src/main/resources/exampleSuite.XML','*\bak';你能给我一些指导吗?你是怎么做到的?!我需要做更多的脚本任务。ThanksI为文件替换做了以下操作,但当我将ab参数作为输出路径传递时,它不会工作,而当我输入显式路径时,它会工作/usr/bin/perl-w使用strict;使用XML::Twig;my$file=$ARGV[0];my$twig=XML::twig->new twig_handlers=>{parameter=>sub{if$\->att'name'eq'示例参数{$\->set_att'value'=>'22222'}}},pretty_print=>'indented'$细枝->解析文件$file;打开XMLOUT,$file$twig->print\*XMLOUT或die无法写入修改后的XML文件:$\N关闭XMLOUT$小枝->齐平;请查看个性化教程/咨询服务。