Существует ли программа, дружественная к трубам, которая принимает:
- 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 — это бесплатное программное обеспечение с открытым исходным кодом, выпущенное под лицензиейЛицензия Массачусетского технологического институтачто позволяет свободное использование и распространение как в коммерческих, так и в некоммерческих целях
решение2
Если вы не против использования/изучения XSLT, вотxsltprocутилита, которая может это сделать.
решение3
XMLSH имеет командуисправленокоторые могут соответствовать вашим параметрам.
исправленовычисляет выражение xpath и редактирует каждый соответствующий узел, выводя результирующий документ