これは私のサンプル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>
これでは、 「opensource」文字列が含まれている場合にのみ、リビジョンの値を更新する必要があります。
私はたくさん検索しましたが、これを達成するのに役立つものは何も見つかりませんでした。以下のように位置に基づいて値を変更できました。誰かがこれを更新するのを手伝ってくれますか? または、これを行うためのより優れた 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,
);