Я пытаюсь извлечь значение node из 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 с помощью команды оболочки. У меня есть следующие требования/наблюдения:
- Оболочка script будет выполнена в файле сборки, который мы используем на работе, поэтому чем меньше script, тем лучше.
- Так как он будет использоваться на нескольких системах (обычно RHEL5), я ищу что-то, что может запускаться изначально по умолчанию.
- Теги, подобные возможно, встречаются в другом месте в pom, поэтому я не могу просто 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 за вашу помощь.