У меня есть файл XML, и мне нужно обновить какое-то значение. Мой XML-файл содержит комментарий. Я хотел бы сохранить комментарий после написания XML, но он исчез.
Вот мой XML:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Data System -->
<process>
<!-- Student Name -->
<NAME source="hsfg" class="hshah" property="Name">
<VALUE type="string"></VALUE>
<VALUE type="None"></VALUE>
</NAME>
<!-- Exercise Number -->
<number source="hsfg" class="hgdgf" property="gagfa">
<VALUE type="string"></VALUE>
<VALUE type="None"></VALUE>
</number>
<!-- Exam ID -->
<id source="hsfg" class="gfdg" property="fadg">
<VALUE type="string"></VALUE>
<VALUE type="None"></VALUE>
</id>
</process>
Это значение, которое мне нужно обновить
<!-- Student Name -->
<NAME source="hsfg" class="hshah" property="Name">
<VALUE type="string"></VALUE>
<VALUE type="None"></VALUE>
</NAME>
стать этим:
<!-- Student Name -->
<NAME source="hsfg" class="hshah" property="Name">
<VALUE type="string">new value</VALUE>
<VALUE type="None"></VALUE>
</NAME>
Мой код:
read = ET.parse('test.xml').getroot()
parent = read.find('.//NAME[@property="Name"]')
change = parent.find('VALUE[@type="string"]')
change.text = 'new value'
tree = ET.ElementTree(read)
tree.write("test.xml")
Результатом файла test.xml станет это. комментарий и <?xml version="1.0" encoding="UTF-8"?>
исчезли.
<process>
<NAME source="hsfg" class="hshah" property="Name">
<VALUE type="string">new value</VALUE>
<VALUE type="None" />
</NAME>
<number source="hsfg" class="hgdgf" property="gagfa">
<VALUE type="string" />
<VALUE type="None" />
</number>
<id source="hsfg" class="gfdg" property="fadg">
<VALUE type="string" />
<VALUE type="None" />
</id>
</process>
НО мой результат ожидания, структура и комментарий остаются такими же, как и раньше, обновляют значение следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Data System -->
<process>
<!-- Student Name -->
<NAME source="hsfg" class="hshah" property="Name">
<VALUE type="string">new value</VALUE>
<VALUE type="None"></VALUE>
</NAME>
<!-- Exercise Number -->
<number source="hsfg" class="hgdgf" property="gagfa">
<VALUE type="string"></VALUE>
<VALUE type="None"></VALUE>
</number>
<!-- Exam ID -->
<id source="hsfg" class="gfdg" property="fadg">
<VALUE type="string"></VALUE>
<VALUE type="None"></VALUE>
</id>
</process>
Кто-нибудь может мне помочь, пожалуйста. Большое спасибо.