Cоздание xml файла очень просто с elementtree. Пример для xml.yandex.ru
Множество сервисов в интернет используют метод взаимодействия через XML файлы, их же используют различные программы, например читают данные из XML документов. Тот же ворд и эксель версии 2007-2010 с расширениями docx и xlsx представляют собой обычный xml файл упакованный в zip архив с небольшим количеством другой технической информации. В общем задача нужная и интересная.
Создание xml файла с помощью elementtree на python очень простая задача
Пример реальный xml файл созданный для работы с xml.yandex.ru (python 2.7) :
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
u"""Создание xml файла для XML.YANDEX."""
import xml.etree.ElementTree as ET # подключаем библиотеку XML
# ##################### формируем xml для посылки яндексу ############
# создаем документ
root = ET.Element("request") # рутовый элемент
query = ET.SubElement(root, "query") # добавляем дочерний элемент к root
query.text = u"яндекс" # добавляем значение элемента
page = ET.SubElement(root, "page") # добавляем дочерний элемент к root
page.text = "0" # добавляем значение элемента
# добавляем дочерний элемент к root
groupings = ET.SubElement(root, "groupings")
# добавляем дочерний элемент к groupings
groupby = ET.SubElement(groupings, "groupby")
groupby.set("attr", "d") # устанавливаем аттрибут для groupby
groupby.set("mode", "deep") # устанавливаем еще один аттрибут для groupby
groupby.set("groups-on-page", "10") # устанавливаем аттрибут
groupby.set("docs-in-group", "1") # устанавливаем аттрибут
message = ET.tostring(root, "utf-8") # формируем XML документ в строку message
# Добавляем строчку кодировки для xml файла
doc = '<?xml version="1.0" encoding="UTF-8"?>' + message
# ##################### выводим результат формирования xml на экран ###########
# меняем кодировку чтобы под виндовс было понятно что написано русскими буквами
print doc.decode('utf-8')
Пример для python 3 версии, отличие: работа идет в виде бинарной строки, которую перекодируем до объединения с doc, функция print()
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
u"""Создание xml файла для XML.YANDEX."""
import xml.etree.ElementTree as ET # подключаем библиотеку XML
# ##################### формируем xml для посылки яндексу ############
# создаем документ
root = ET.Element("request") # рутовый элемент
query = ET.SubElement(root, "query") # добавляем дочерний элемент к root
query.text = "яндекс" # добавляем значение элемента
page = ET.SubElement(root, "page") # добавляем дочерний элемент к root
page.text = "0" # добавляем значение элемента
# добавляем дочерний элемент к root
groupings = ET.SubElement(root, "groupings")
# добавляем дочерний элемент к groupings
groupby = ET.SubElement(groupings, "groupby")
groupby.set("attr", "d") # устанавливаем аттрибут для groupby
groupby.set("mode", "deep") # устанавливаем еще один аттрибут для groupby
groupby.set("groups-on-page", "10") # устанавливаем аттрибут
groupby.set("docs-in-group", "1") # устанавливаем аттрибут
message = ET.tostring(root, "utf-8") # формируем XML документ в строку message
# Добавляем строчку кодировки для xml файла
doc = '<?xml version="1.0" encoding="UTF-8"?>' + message.decode("utf-8")
# ##################### выводим результат формирования xml на экран ###########
# меняем кодировку чтобы под виндовс было понятно что написано русскими буквами
print (doc)
Результатом будет XML документ в виде строки
<?xml version="1.0" encoding="UTF-8"?><request><query>яндекс</query><page>0</page><groupings><groupby attr="d" docs-in-group="1" groups-on-page="10" mode="deep" /></groupings></request>
Таким образом достаточно просто создали достаточно нужный xml файл для работы с Яндекс XML.