Я пытался отредактировать существующий файл XML на основе значения имени атрибута узла.
Например:
<books>
<book name = 'Pride and Prejudice' value='not available' price='10'/>
<book name = 'To kill a Mockingbird' value='available' price='8'/>
<book name = 'The Face of a Stranger' value='not available' price='16'/>
</books>
Цель состоит в том, что если значение атрибута имени совпадает, измените значениеприписывать.Например, если имя «Гордость и предубеждение» совпадает с поиском, измените атрибут значения на «доступно».
Вывод должен выглядеть следующим образом:
<books>
<book name = 'Pride and Prejudice' value='available' price='10'/>
<book name = 'To kill a Mockingbird' value='available' price='8'/>
<book name = 'The Face of a Stranger' value='not available' price='16'/>
</books>
Я смог прочитать файл XML и сопоставить значения имени, но не смог понять, как изменить значение атрибута.
Вот мой код:
my $xml_data = XML::LibXML->load_xml(location => a.xml);
for my $nodes ( $xml_data->findnodes('/Books/Book') ) {
my $att_name = $nodes->findvalue('@name');
my $att_val = $nodes->findvalue('@value');
if ( $searchString eq $att_name ) {
<how do I change the attribute value?>
}
}