Я использую xml_edit, чтобы изменить значение xml. Это не работает со сценарием ниже.
Я хочу изменить название автора Этвуд, Маргарет в Вторая книжная полка в ниже xml:
<?xml version = "1.0"?>
<bookshelf>
<Name>First Bookshelf</Name>
<book>
<author>Conway, Damien</author>
<title>Perl Best Practices</title>
</book>
<book>
<author>Atwood, Margaret</author>
<title>Perl Best Practices</title>
</book>
</bookshelf>
<bookshelf>
<Name>Second Bookshelf</Name>
<book>
<author>Conway, Damien</author>
<title>Perl Best Practices</title>
</book>
<book>
<author>Atwood, Margaret</author>
<title>Perl Best Practices</title>
</book>
</bookshelf>
Я пытаюсь использовать рецепт ниже. Не знаю, как мне проверить Имя и автор второй книжной полки.
xml_edit 'change title' do
path 'C:\\testing\\text.xml'
target '/bookshelf/book/title[text()=\'Perl Best Practices\']'
fragment '<title>Hello World</title>'
action :replace
end
обновил вопрос
Похоже, ваш xml недействителен Должно получиться так:
<?xml version = "1.0"?>
<shelves>
<bookshelf>
<Name>First Bookshelf</Name>
<book>
<author>Conway, Damien</author>
<title>Perl Best Practices</title>
</book>
<book>
<author>Atwood, Margaret</author>
<title>Perl Best Practices</title>
</book>
</bookshelf>
<bookshelf>
<Name>Second Bookshelf</Name>
<book>
<author>Conway, Damien</author>
<title>Perl Best Practices</title>
</book>
<book>
<author>Atwood, Margaret</author>
<title>Perl Best Practices</title>
</book>
</bookshelf>
</shelves>
Имея это в виду, вы можете:
xml_edit 'change title' do
path 'C:\\testing\\text.xml'
target '/shelves/bookshelf[Name[text()=\'Second Bookshelf\']]/book[author[text()=\'Atwood, Margaret\']]/title'
fragment '<title>Hello World</title>'
action :replace
end
Пожалуйста, предоставьте более подробную информацию, например, как вы определяете цель, как выглядит ваш рецепт и какие журналы.