Заменить значение в xml с помощью Chef

Я использую 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

Пожалуйста, предоставьте более подробную информацию, например, как вы определяете цель, как выглядит ваш рецепт и какие журналы.

zdk 24.10.2018 05:14

обновил вопрос

deepak singla 24.10.2018 05:23
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
1
2
160
1

Ответы 1

Похоже, ваш 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

Другие вопросы по теме