Я использую версию xmlstarlet для обновления файла xml через пакетный файл Windows.Как обновить xml-файл с помощью xmlstarlet
xml edit --update "/xml/table/rec[@id=3]/@id" --value 10 %xmlfile%
Я ожидал, чтобы обновить идентификатор атрибута НОЦ узла 10. Когда я запускаю это я вижу обновленный XML, как ожидается, в командной строке, но файл никогда не обновляется.
Как я могу это сделать, я хочу остаться в стороне от перезаписи всего файла, так как файл может быть большим.
перед обновлением:
<?xml version="1.0"?>
<xml>
<table>
<rec id="1" />
<rec id="2" />
<rec id="3" />
</table>
</xml>
после обновления:
<?xml version="1.0"?>
<xml>
<table>
<rec id="1" />
<rec id="2" />
<rec id="10" />
</table>
</xml>
большинство инструментов оболочки не поддерживают обновление данных inplace.For например, 'СЭД - i' (inplace) по-прежнему записывает данные на новое место на диске, а затем удаляет старый файл. Я думаю, что то же самое верно и для XML-инструментов. Я был бы действительно удивлен, если 'xmlstarlet' работает по-другому. Удачи. – shellter
Пожалуйста, покажите документ XML до и после этого обновления. –
@ Mathias Я, безусловно, согласен с вами в принципе, что хорошо показывать входные данные, но проблема здесь заключается в редактировании на месте. Файл '
' достаточно, чтобы воспроизвести проблему - атрибут 'id' изменен, но вывод печатается в stdout, а не обратно в файл. –