Найти - Пользователи
Полная версия: python 3.2 и lxml, криво создается xml
Начало » Python для новичков » python 3.2 и lxml, криво создается xml
1
chupa
Т.к я новичок в программирование, возникла трудность в создание xml.
Нашел пример по созданию xml файла.
Собственно вот код немного поправленный мной )) :

#!/usr/bin/python
from lxml import etree
from os import getcwd
title = 'title'
content = 'content'
height = 'height'
width = 'width'
version = 'version'
filename = 'filename'
id = '100'

root = etree.Element("initialWindow")
etree.SubElement(root, "title").text = title
etree.SubElement(root, "content").text = content
etree.SubElement(root, "height").text = str(height)
etree.SubElement(root, "width").text = str(width)
app_window = etree.tostring(root)

root = etree.Element("application", xmlns="http://ns.adobe.com/air/application/1.5")
etree.SubElement(root, "id").text = id
etree.SubElement(root, "version").text = version
etree.SubElement(root, "filename").text = filename
#etree.SubElement(root, "name").text = self.name
root.append(etree.XML(app_window))
handle = etree.tostring(root, pretty_print=True, encoding='utf-8')# xml_declaration=True)

path = getcwd()
applic = open(path+'/'+'test.xml', 'w')
applic.writelines(str(handle))
applic.close()
Что получилось в самом файле если запустить скрип в python 3.2
b'<application xmlns="http://ns.adobe.com/air/application/1.5">\n  <id>100</id>\n  <version>version</version>\n  <filename>filename</filename>\n  <initialWindow>\n    <title>title</title>\n    <content>content</content>\n    <height>height</height>\n    <width>width</width>\n  </initialWindow>\n</application>\n'
Этот же скрип в python 2.7
<application xmlns="http://ns.adobe.com/air/application/1.5">
<id>100</id>
<version>version</version>
<filename>filename</filename>
<initialWindow>
<title>title</title>
<content>content</content>
<height>height</height>
<width>width</width>
</initialWindow>
</application>
Почему в 3 версии питона XML файл создается криво?
Можно ли это исправить?
pyuser
В этой строке:
handle = etree.tostring(root, pretty_print=True, encoding='utf-8')
уберите параметр encoding. Если же по каким-то причинам Вы не хотите его убирать, то измените запись в файл
with open(os.path.join(os.getcwd(), "text.xml"), "wb") as f:
f.write(handle)
вместо
path = getcwd()
applic = open(path+'/'+'test.xml', 'w')
applic.writelines(str(handle))
applic.close()
chupa
pyuser
В этой строке:
handle = etree.tostring(root, pretty_print=True, encoding='utf-8')
уберите параметр encoding. Если же по каким-то причинам Вы не хотите его убирать, то измените запись в файл
with open(os.path.join(os.getcwd(), "text.xml"), "wb") as f:
f.write(handle)
вместо
path = getcwd()
applic = open(path+'/'+'test.xml', 'w')
applic.writelines(str(handle))
applic.close()
Спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB