Существует ли команда UNIX, которая может заменить элемент XML? (Например, sed для XPath?)

Существует ли команда UNIX, которая может заменить элемент XML? (Например, sed для XPath?)

Существует ли программа, дружественная к трубам, которая принимает:

  • XML-документ
  • Выражение XPath, указывающее целевой элемент(ы)
  • Желаемая замена

? Что-то вроде того sed, но со знанием XML (элементы, пробелы и т. д.)?

решение1

XMLStarlet может редактировать XML и прекрасно уживается в конвейере.

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 — это набор утилит командной строки (инструментарий) для запроса, преобразования, проверки и редактирования XML-документов и файлов с использованием простого набора команд оболочки аналогично тому, как это делается с помощью команд UNIX grep, sed, awk, diff, patch, join и т. д.

XMLStarlet — это бесплатное программное обеспечение с открытым исходным кодом, выпущенное под лицензиейЛицензия Массачусетского технологического институтачто позволяет свободное использование и распространение как в коммерческих, так и в некоммерческих целях

https://xmlstar.sourceforge.net/

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

решение2

Если вы не против использования/изучения XSLT, вотxsltprocутилита, которая может это сделать.

решение3

XMLSH имеет командуисправленокоторые могут соответствовать вашим параметрам.

исправленовычисляет выражение xpath и редактирует каждый соответствующий узел, выводя результирующий документ

Связанный контент