Получите значение Узла от XML, использующего xmllint

От kexec страница справочника:

-e (--exec)
      Run the currently loaded kernel. Note that it will  reboot  into
      the loaded kernel without calling shutdown(8).
2
24.09.2013, 16:03
2 ответа

Если Ваш Det.xml всегда собирается быть похожими на это (например, не будет иметь никого дополнительным ResponseType узлы), можно просто использовать это:

xmllint --xpath 'string(//ResponseType)' Det.xml

И это выложит: success


Если Ваш xmllint не имеет xpath по некоторым причинам, можно всегда отступать к регулярным выражениям для этого вида вещи:

grep -Po '(?<=<ResponseType>)\w+(?=</ResponseType>)' Det.xml

Это использует регулярные выражения Perl для обеспечения положительного взгляда aheads / взгляд behinds и только показывает подобранную часть (не целая строка). Это произведет то же как выше, не используя xmllint / xpath вообще.

10
27.01.2020, 21:50
  • 1
    Как я упомянул, я не имею xpath в ENV Unix –  The Dark Knight 24.09.2013, 16:41
  • 2
    , я не был совершенно уверен, к чему Вы обращались. Я думал, что это был автономный сценарий, который Вы не имели или что-то. Я предполагаю, что у Вас есть grep? Я обновлю свой ответ с альтернативой. –  JayQuerie.com 24.09.2013, 16:46
  • 3
    @TheDarkKnight, который я отправил решение с помощью только grep. Это сыро, но это сделало задание. Если Вы будете искать чистое xmllint решение, то я позволю кому-то еще рисковать там. Всего наилучшего. –  JayQuerie.com 24.09.2013, 16:53
  • 4
    Прекрасный, большое спасибо. Это - то, что я хотел. Проголосовавший и принятый. –  The Dark Knight 24.09.2013, 17:02

Поскольку вы искали решение с использованием xmllint без параметра - xmlpath , у меня работает следующее:

echo "cat //ResponseType/text()" | xmllint --nocdata --shell /tmp/Det.xml | grep -v '/'
success

Ваш пример statusMSG == "$ (echo" cat / Envelope / Body / grtHgetRed / ResponseType / text () "| xmllint --nocdata --shell response.xml | sed '1d; $ d')" не работает, потому что вы используете echo "cat ... / text ()" внутри кавычек без кавычек и используете оператор == вместо присваивания.

1
27.01.2020, 21:50

Теги

Похожие вопросы