以下标记在文件中的格式相同,格式不正确 我想用自定义文本替换名称test中的用户标记内的标记。 perl中的xml解析器不能使用,因为它不是纯xml。
<user name="test">
<option name="test2">dev</option>
<option name="test3">csm></option>
</user>
<user name="test12">
<option name="test21">dev1</option>
<option name="test31">csm1></option>
</user>
答案 0 :(得分:0)
这就是我设法做到的。
open(FILE,"<","menu1.xml");
open(OUT,">","menu12.xml");
my @values = split('\n', $data);
my $ind = 0;
my $arraysize = @values;
while (($input = <FILE>))
{
print OUT $input;
if($input =~ m/<menu name="">/)
{
while (defined($input = <FILE>) && ($input !~ m/<\/menu>/))
{
print OUT $input;
if ($input =~ m/.+user name="(.*)">/ && $1 eq $access_type)
{
while (defined($input = <FILE>) && ($input !~ m/<\/user>/))
{
if($ind < $arraysize)
{
$input =~ s/<(.*) name="(.*)">(.*)<\/(.*)>/$values[$ind]/;
print OUT $input;
$ind = $ind+1;
}
}
if($input =~ m/<\/user>/)
{
print OUT $input;
}
}
}
if($input =~ m/<\/menu>/)
{
print OUT $input;
}
}
}