Я решил сгенерировать xml-документ версии 1.0 и начал искать материал в интернете. Нашел интересную статью Создание XML в Python 3. Я повторил пример и решил на его основе сделать свой пример. Я пришёл к выводу, что в генерации эксемельного документа ничего сложного нет. Возможно я не прав, потому что мне попался простой пример.
Если вам внезапно захотелось создать XML только встроенными средствами языка Python, то выход есть: xml.dom.minidom. Модуль обладает такими возможностями как CDATA или prettyprint. Сам модуль встроенный. Вам не придётся его закачивать.
Рассмотрит элементы в XML-документе:
from xml.dom import minidom
#создаём объект
doc = minidom.Document()
#корневой тег root
root = doc.createElement('root')
doc.appendChild(root)
name = doc.createElement('name')
text = doc.createTextNode('Production for you')
name.appendChild(text)
root.appendChild(name)
#первый блок product
product = doc.createElement('product')
product.setAttribute('color', 'white')
#описание
decr = doc.createElement('decr')
text = doc.createTextNode('Text decr 1')
decr.appendChild(text)
decr.setAttribute('color', 'green')
product.appendChild(decr)
#статья
article = doc.createElement('text')
text = doc.createTextNode('Text article 1')
article.appendChild(text)
article.setAttribute('color', 'white')
product.appendChild(article)
#цена
price = doc.createElement('price')
text = doc.createTextNode('100 rub')
price.appendChild(text)
price.setAttribute('red', 'green')
product.appendChild(price)
root.appendChild(product)
#второй блок product
product = doc.createElement('product')
product.setAttribute('color', 'white')
#описание
decr = doc.createElement('decr')
text = doc.createTextNode('Text decr 2')
decr.appendChild(text)
decr.setAttribute('color', 'green')
product.appendChild(decr)
#статья
article = doc.createElement('text')
text = doc.createTextNode('Text article 2')
article.appendChild(text)
article.setAttribute('color', 'white')
product.appendChild(article)
#цена
price = doc.createElement('price')
text = doc.createTextNode('200 rub')
price.appendChild(text)
price.setAttribute('red', 'green')
product.appendChild(price)
root.appendChild(product)
#запись в файл
xml_str = doc.toprettyxml(indent=" ")
with open("product.xml", "w") as f:
f.write(xml_str)
Результат у вас записывается в файл product.xml. В итоге получился xml-документ версии 1.0. Документ состоит из двух блоков. Вы можете сгенерировать массу блоков product при помощи цикла.
<?xml version="1.0" ?>
<root>
<name>Production for you</name>
<product color="white">
<decr color="green">Text decr 1</decr>
<text color="white">Text article 1</text>
<price red="green">100 rub</price>
</product>
<product color="white">
<decr color="green">Text decr 2</decr>
<text color="white">Text article 2</text>
<price red="green">200 rub</price>
</product>
</root>
О том как распарсить product.xml написано в статье: Как распарсить xml при помощи модуля xml.dom.minidom Python.