Обновление значения атрибута xml на основе других с помощью Perl
Это мой пример XML-файла
<manifest>
<default>
<remote>remote1</remote>
<revision>rev1</revision>
</default>
<project>
<name>common</name>
<path>opensource/device</path>
<revision>sa</revision>
<x-ship>oss</x-ship>
</project>
<project>
<name>external</name>
<path>source/tp</path>
<x-ship>none</x-ship>
</project>
<project>
<name>ws</name>
<path>opensource/ws</path>
<remote>nj</remote>
<revision>myno</revision>
<x-ship>none</x-ship>
</project>
</manifest>
В этом мне нужно обновить значение ревизии только тогда, когда<path>
содержит строку с открытым исходным кодом.
Я много искал, но не смог найти ничего полезного для этого, я мог бы изменить значение в зависимости от позиции, как показано ниже, может кто-нибудь помочь мне обновить это? Или дайте мне знать, если есть лучшая библиотека Perl для этого.
#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
my $xml_file = 'dev.xml';
my $xml = XMLin(
$xml_file,
KeepRoot => 1,
ForceArray => 1,
);
$xml->{manifest}->[0]->{project}->[2]->{revision} = 'kyo';
XMLout(
$xml,
KeepRoot => 1,
NoAttr => 1,
OutputFile => $xml_file,
);