Могу ли я вставить подэлемент одним вызовом XMLStarlet и все еще иметь правильное форматирование?
Я использовал удивительный совет из cellux, чтобы добавить новый элемент (с атрибутами и подэлементами) под существующий элемент в этом вопросе, и столкнулся с проблемой форматирования.
Начиная с файла example.xml:
<processes>
<process id="test"/>
</processes>
Если я использую метод cellux для выполнения нескольких с одним вызовом XML с несколькими действиями...
xml ed -L \
-s "/processes" -t elem -n processTMP -v "" \
-i "/processes/processTMP" -t attr -n id -v "test2" \
-s "/processes/processTMP" -t elem -n subproc -v "s2" \
-r "/processes/processTMP" -v "process" \
example.xml
Полученный файл содержит одну новую строку XML.
<processes>
<process id="test"/>
<process id="test2"><subproc>s2</subproc></process>
</processes>
Если я сделаю несколько звонков в XML с каждым в отдельном звонке...
xml ed -L -s "/processes" -t elem -n processTMP -v "" example.xml
xml ed -L -i "/processes/processTMP" -t attr -n id -v "test2" example.xml
xml ed -L -s "/processes/processTMP" -t elem -n subproc -v "s2" example.xml
xml ed -L -r "/processes/processTMP" -v "process" example.xml
Я получаю хорошо отформатированный (с отступом) XML.
<processes>
<process id="test"/>
<process id="test2">
<subproc>s2</subproc>
</process>
</processes>
Эти два файла синтаксически идентичны, но я бы хотел сохранить XML как можно более чистым.
Кто-нибудь знает чистый способ сделать один вызов XML и все еще получить форматирование? Я знаю, что мог бы запустить его через "xml fo" в конце, но должен быть лучший способ.