Краткий ответ: Вы должны сосредоточиться и иметь дело с данными (т.е. объектом python), а не с необработанным XML
Основная история:
Предполагается, что XML представляет собой представление некоторых данных или набора данных.
В вашем вопросе недостаточно подробностей о типе данных, что они представляют и т. Д. И т. Д., Поэтому я дам вам несколько основных ответов.
Python:
BeautifulSoup, lxml и другие библиотеки Python (ElementTree и т. Д.) Упрощают работу с XML. Они позволили мне читать или записывать данные XML гораздо проще, чем если бы я пытался работать непосредственно с XML в необработанном виде.
В середине этих двух действий (ввод, вывод) моя программа на python имеет дело с хорошим объектом python или каким-то деревом разбора, которое я могу пройти. Вы можете читать данные, создавать объект из этой строки, манипулировать им и записывать XML.
Другой выбор, Шаблоны:
Хорошо - может быть, вам нравится XML, и вы просто хотите «шаблонировать» его, чтобы вы могли заполнить его данными.
Возможно, вам будет удобнее, если вы на самом деле не манипулируете данными, а просто представляете их для вывода. И это похоже на строки XML, которые вы используете в настоящее время, поэтому может быть более знакомым.
Используйте Cheetah, Jinja или другие библиотеки шаблонов, чтобы помочь.
Создайте шаблон для файла XML, используя этот язык шаблонов.
Например, вы просто читаете список книг из файла или таблицы базы данных.
Вы передадите этот список объектов книги в шаблонизатор с шаблоном, а затем попросите его записать вывод XML.
Пример шаблона для этих объектов книги:
<?xml version="1.0"?>
<catalog>
{% for object in object_list %}
<book id="{{ object.bookID }}">
<author>{{ object.author_name }}</author>
<title>{{ object.title }}</title>
<genre>{{ object.genre }}</genre>
<price>{{ object.price }}</price>
<publish_date>{{ object.pub_date }}</publish_date>
<description>{{ object.description }}</description>
</book>
{% endfor %}
</catalog>
</xml>
Механизм шаблонов будет циклически перебирать «object_list» и выводить длинный XML-файл со всеми вашими книгами. Это было бы намного лучше, чем хранение необработанных строк XML, как вы в настоящее время.
Это позволяет обновлять и модифицировать отображение XML отдельно от данных, хранения данных и манипулирования данными, делая вашу жизнь проще.