Nativer Shell-Befehlssatz zum Extrahieren von Knotenwerten aus XML

Ich versuche, den Wert eines Knotens aus einer pom.xml zu extrahieren:

<?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>

Ich muss die ArtifactId und die Version mit einem Shell-Befehl aus dem XML extrahieren. Ich habe folgende Anforderungen / Beobachtungen:

Das Shell-Skript wird in einer Build-Assembly-Datei erstellt, die wir bei der Arbeit verwenden. Je kleiner das Skript, desto besser.Da es auf mehreren Systemen (normalerweise RHEL5) verwendet wird, suche ich etwas, das nativ auf Standard-Images ausgeführt werden kann.Tags wie können an anderer Stelle im POM vorkommen, daher kann ich nicht einfach nach diesen Tags suchen.

Ich habe Folgendes versucht:

xpath Funktioniert auf meinem Mac, ist jedoch auf RHEL-Computern nicht standardmäßig verfügbar. Ähnliches gilt fürxmllint --xpath, die ich denke, ist nur in späteren Versionen von verfügbarxmllint, die ich nicht habe und nicht durchsetzen kann.xmllint --pattern schien vielversprechend zu sein, aber ich kann anscheinend keinen Output erzielenxmllint --pattern '//project/parent/version' pom.xml (druckt das gesamte XML) oderxmllint --stream --pattern '//project/parent/version' pom.xml (keine Leistung).

Mir ist klar, dass dies hier auf SO eine häufige Frage ist, aber die obigen Punkte sind, warum ich diese Antworten nicht verwenden kann. TIA für Ihre Hilfe.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage