Gibt es einen UNIX-Befehl, der ein XML-Element ersetzen kann? (Wie ein sed für einen XPath?)

Gibt es einen UNIX-Befehl, der ein XML-Element ersetzen kann? (Wie ein sed für einen XPath?)

Gibt es ein rohrfreundliches Programm, das Folgendes übernimmt:

  • Ein XML-Dokument
  • Ein XPath-Ausdruck, der die Zielelemente angibt
  • Der gewünschte Ersatz

? Etwas Ähnliches sed, aber mit Kenntnissen in XML (Elemente, Leerzeichen usw.)?

Antwort1

XMLStarlet kann XML bearbeiten und lebt gerne in einer Pipe.

xmlstarlet edit \
    -N "b=http://www.springframework.org/schema/beans" \
    -u '/b:beans/b:bean[@id="stun1"]/b:constructor-arg/@value' \
    -v "stun.example.com \
    -L servers.xml

cat servers.xml | xmlstarlet edit -u <xpath> -v <value>

XMLStarlet ist eine Reihe von Befehlszeilenprogrammen (Toolkit) zum Abfragen, Transformieren, Validieren und Bearbeiten von XML-Dokumenten und -Dateien unter Verwendung eines einfachen Satzes von Shell-Befehlen auf eine Weise, die den UNIX-Befehlen grep, sed, awk, diff, patch, join usw. ähnelt.

XMLStarlet ist eine kostenlose Open-Source-Software, die unterMIT-Lizenzdie die kostenlose Nutzung und Verbreitung sowohl für kommerzielle als auch nichtkommerzielle Zwecke ermöglicht

https://xmlstar.sourceforge.net/

https://en.m.wikipedia.org/wiki/XMLStarlet

Antwort2

Wenn es Ihnen nichts ausmacht, XSLT zu verwenden/zu lernen, gibt es diexsltprocDienstprogramm, das dies erreichen kann.

Antwort3

XMLSH hat einen Befehlxeddas könnte Ihren Parametern entsprechen.

xedwertet einen XPath-Ausdruck aus und bearbeitet jeden passenden Knoten und gibt das Ergebnisdokument aus

verwandte Informationen