Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 26, 2008 16:56:01

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

а чем удобннее формировать XML?

Раньше писал его в прям в строку.
А cейчас понадобилась такая функциональность:
Сформировать кусок дерева отдельно. Ткнуть его в какой-нибудь узел основной XML-ки. Не понравилось - отцепить, перенести в другое место.
Посмотреть - кто там парент, быстро сделать поиск по чаилдам.

Хотелось бы все это иметь в питоник-стиле =)

Сейчас по привычке смотрю в сторону Чудесного Супа.
Но может есть либы, настолько кошерные и удобные, что стоит потратить время на их изучение?



Отредактировано (Авг. 26, 2008 16:58:29)

Офлайн

#2 Авг. 26, 2008 18:00:15

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

а чем удобннее формировать XML?

Я все же предпочитаю использовать стандартные решения, DOM в твоем случае. Или становящееся стандартом, ElementTree.
Я бы смотрел в сторону DOM и, при необходимости, дополнял интерфейс, дописывал бы утилитарный функционал, облегчающий работу с DOM.

..bw



Офлайн

#3 Авг. 26, 2008 18:46:35

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

а чем удобннее формировать XML?

А в чем разница между DOM и ElementTree?



Офлайн

#4 Авг. 26, 2008 22:04:59

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

а чем удобннее формировать XML?

Попробовал ElementTree:
Негативные выводы:
1. у элемента нельзя узнать родителя без дополнительных нетривиальных телодвижений.
2. чтобы распечатать красивый xml - нужно писать свою функцию.
3. никак не могу задать текст юникодом (русскими буквами) как не пытаюсь - всегда получаю фигню
Позитивные:
1. Все довольно просто и интуитивно.
2. Для доступа к тексту элемента есть атрибут text (а не отдельная нода, как обычно)



Отредактировано (Авг. 27, 2008 14:43:32)

Офлайн

#5 Авг. 27, 2008 08:44:20

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

а чем удобннее формировать XML?

3)

import xml.etree.cElementTree as etree

etree.tostring(element, encoding=None)

etree.ElementTree(element).write(file, encoding='us-ascii')



Отредактировано (Авг. 27, 2008 08:48:45)

Офлайн

#6 Авг. 27, 2008 14:40:53

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

а чем удобннее формировать XML?

Всегда использую xml.dom.minidom, по-моему довольно функционально и не менее интуитивно



Офлайн

#7 Авг. 27, 2008 14:51:24

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

а чем удобннее формировать XML?

Как не кручу - русские буквы получаются написаны энтитями:

# -*- coding: UTF-8 -*-
import xml.etree.ElementTree as ET

description = ET.Element('description')
description.text = u'Я говорю по русски'
print ET.tostring(description)
Получаю & # 1087;…..



Офлайн

#8 Авг. 27, 2008 15:39:45

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

а чем удобннее формировать XML?

Я же писал: etree.tostring(element, encoding)

>>> import xml.etree.ElementTree as ET
>>> description = ET.Element('description')
>>> description.text = u'Я говорю по русски'
>>> repr(ET.tostring(description, 'utf-8'))
"'<description>\\xc3\\x9f \\xc3\\xa3\\xc3\\xae\\xc3\\xa2\\xc3\\xae\\xc3\\xb0\\xc3\\xbe \\xc3\\xaf\\xc3\\xae \\xc3\\xb0\\xc3\\xb3\\xc3\\xb1\\xc3\\xb1\\xc3\\xaa\\xc3\\xa8</description>'"



Офлайн

#9 Авг. 27, 2008 15:46:32

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

а чем удобннее формировать XML?

Шайтан, заработало =)
Вроде, что я так делал.
Видимо сонный был…



Отредактировано (Авг. 27, 2008 15:47:09)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version