Встроенная команда оболочки для извлечения значения узла из XML
Я пытаюсь извлечь значение узла из pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<parent>
<groupId>org.me.labs</groupId>
<artifactId>my-random-project</artifactId>
<version>1.5.0</version>
</parent>
...
</project>
Мне нужно извлечь artifactId и версию из XML с помощью команды оболочки. У меня есть следующие требования / наблюдения:
Сценарий оболочки будет выполнен в файле сборки сборки, который мы используем на работе, поэтому чем меньше скрипт, тем лучше.Так как он будет использоваться на нескольких системах (обычно RHEL5), я ищу что-то, что может работать изначально на изображениях по умолчанию.Такие теги могут встречаться в другом месте в поме, поэтому я не могу просто awk для этих тегов.Я пробовал следующее:
xpath
работает на моем Mac, но не доступен по умолчанию на машинах RHEL. Аналогично дляxmllint --xpath
, который, я думаю, доступен только в более поздних версияхxmllint
что я не имею и не могу обеспечить.xmllint --pattern
казалось многообещающим, но я не могу получить выход изxmllint --pattern '//project/parent/version' pom.xml
(печатает весь XML) илиxmllint --stream --pattern '//project/parent/version' pom.xml
(нет выхода).Я понимаю, что это общий вопрос здесь, на SO, но вышеизложенное объясняет, почему я не могу использовать эти ответы. TIA за вашу помощь.