голосование
BASH
PHP
Javascript
HTML
Программы
Firebird
Майнинг
PostgreSQL
Хостинг
Железо
Ресурсы
GIT
SEO
Oracle
Python
Мобильные технологии
Ремонт
Mercurial
Заработок на сайте
Docker
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Как сгенерировать xml при помощи модуля xml.dom.minidom Python

Я решил сгенерировать xml-документ версии 1.0 и начал искать материал в интернете. Нашел интересную статью Создание XML в Python 3. Я повторил пример и решил на его основе сделать свой пример. Я пришёл к выводу, что в генерации эксемельного документа ничего сложного нет. Возможно я не прав, потому что мне попался простой пример.

Если вам внезапно захотелось создать XML только встроенными средствами языка Python, то выход есть: xml.dom.minidom. Модуль обладает такими возможностями как CDATA или prettyprint. Сам модуль встроенный. Вам не придётся его закачивать.

Рассмотрит элементы в XML-документе:

  • root - корневой элемент, может быть только один. Это не отдельный тип. Корень может быть как ветвью, так и смешанным и даже листом. Он может быть пустым
  • name - название всего xml-документа
  • product - 'ветвь', имеет дочерние 'ветви' и 'листья', без текста
  • decr - 'лист', не имеет дочерних элементов, содержит только текстовый узел или ничего
  • text - 'лист', не имеет дочерних элементов, содержит только текстовый узел или ничего
  • price - 'лист', не имеет дочерних элементов, содержит только текстовый узел или ничего

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.

просмотры: 2353, уровень: лёгкий уровень, рейтинг: 0, дата: 2017-09-21 21:03:20
проголосовать:

Комментарии:






поиск
реклама
банеры
Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://trainingweb.ru/redirect/domains домен RU домен RU всего за 99 рублей
http://trainingweb.ru/redirect/pingadmin мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP