Добавить элемент XML и сохранить файл? - PullRequest
2 голосов
/ 29 мая 2020

Я новичок в анализе XML с помощью Python с помощью minidom.

У меня есть это XML:

<filelist>
    <file id="1.jpg"></file>
</filelist>

Я хотел бы добавить, а затем сохраните в том же файле следующую строку, например:

    <file id="2.jpg"></file>

Я выполняю синтаксический анализ, используя:

doc = minidom.parse('filelist.xml')
files = doc.getElementsByTagName('file')
for file in files:
      idFile = file.getAttribute("id")
      print(idFile)

Как я могу добавить этот «элемент», а затем сохранить в тот же файл ?

1 Ответ

0 голосов
/ 29 мая 2020

Начиная с вашего исходного кода, следующие дополнения были добавлены в ваш код для выполнения sh добавления элемента и его сохранения обратно в исходный файл:

  1. Создать новый 'file 'element
  2. Установить новый атрибут' file 'element' id '
  3. Получить документ root (' filelist ') узел
  4. Добавить новый элемент 'file' в узле 'filelist'
  5. Записать обновленное XML обратно в исходный файл

См. обновленный код после комментариев, чтобы он соответствовал этому списку дополнений.

from xml.dom import minidom

doc = minidom.parse('filelist.xml')
# 1. Create a new 'file' element
new_file_element = doc.createElement('file')
# 2. Set the new 'file' element 'id' attribute
new_file_element.setAttribute('id', '2.jpg')
# 3. Retrieve the document root ('filelist') node
filelist_element = doc.documentElement
# 4. Append the new 'file' element to the 'filelist' node
filelist_element.appendChild(new_file_element)
files = doc.getElementsByTagName('file')
for file in files:
    idFile = file.getAttribute('id')
    print(idFile)
# 5. Write updated XML back to original file
with open('filelist.xml', 'w') as xml_file:
    doc.writexml(xml_file, encoding='utf-8')
...