这是我的示例xml文件(用于weblogic应用程序的部署计划的剪切版本)。
<?xml version="1.0" encoding="UTF-8"?>
<deployment-plan>
<application-name>ear-my-service</application-name>
<variable-definition>
<variable>
<name>characteristics</name>
<value>myTestEAR</value>
</variable>
<variable>
<name>Url</name>
<value>ABC</value>
</variable>
<variable>
<name>time</name>
<value>300</value>
</variable>
</variable-definition>
</deployment-plan>
我希望在名称为特征时更新值。我环顾四周,整理了这个剧本。
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $data = shift ||die $!;
my $t= XML::Twig->new(
twig_handlers => {
q{project[string(name) =~ /\bcharacteristics\b/]/value} => \&value,
},
pretty_print => 'indented',
);
$t->parsefile( $data );
$t->print;
sub value {
my ($twig, $value) = @_;
$value->set_text("myTestEAR_Modified");
}
但是,它不会将值更改为myTestEAR_Modified。我做错了吗?
答案 0 :(得分:2)
XML中的标记名称为variable
,而非project
,在条件(q{variable[string(name)...
)中替换它,它将起作用。