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.