Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 26, 2012 13:27:15

chupa
От:
Зарегистрирован: 2012-02-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3.2 и lxml, криво создается xml

Т.к я новичок в программирование, возникла трудность в создание 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 файл создается криво?
Можно ли это исправить?



Отредактировано (Фев. 26, 2012 15:46:35)

Офлайн

#2 Фев. 27, 2012 03:24:09

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

python 3.2 и lxml, криво создается xml

В этой строке:

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()



Офлайн

#3 Фев. 27, 2012 05:38:43

chupa
От:
Зарегистрирован: 2012-02-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3.2 и lxml, криво создается 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()
Спасибо



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version