Python (Как обновить XML-файл без создания нового файла) - PullRequest
0 голосов
/ 27 ноября 2018

Мне нужно изменить значение элемента (DB_CONNECT_STRING) в XML-файле без создания нового файла с использованием Python или сценариев.

Содержимое файла XML

<?xml version = '1.0' encoding = 'UTF-8'?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<!-- Database server details -->
<DB_CONNECT_STRING>(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=abc)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=cdb)))</DB_CONNECT_STRING>
</properties>

Обновленный файл XML

------
<properties>
--------
<DB_CONNECT_STRING>(new data)</DB_CONNECT_STRING>
-------
</properties>

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Я бы использовал для простых правок XML:

xmlstarlet ed -u /properties/DB_CONNECT_STRING -v "new value" file.xml

Если вывод выглядит нормально, используйте xmlstarlet --inplace ... для сохранения обратно в файл.

0 голосов
/ 27 ноября 2018

sed -i - это то, что вы ищете.

В вашем случае это должно быть

sed -i 's#<DB_CONNECT_STRING>.*</DB_CONNECT_STRING>#<DB_CONNECT_STRING>(new data)</DB_CONNECT_STRING>#' <here_is_your_file>
...