Форум сайта python.su
Раньше писал его в прям в строку.
А cейчас понадобилась такая функциональность:
Сформировать кусок дерева отдельно. Ткнуть его в какой-нибудь узел основной XML-ки. Не понравилось - отцепить, перенести в другое место.
Посмотреть - кто там парент, быстро сделать поиск по чаилдам.
Хотелось бы все это иметь в питоник-стиле =)
Сейчас по привычке смотрю в сторону Чудесного Супа.
Но может есть либы, настолько кошерные и удобные, что стоит потратить время на их изучение?
Отредактировано (Авг. 26, 2008 16:58:29)
Офлайн
Я все же предпочитаю использовать стандартные решения, DOM в твоем случае. Или становящееся стандартом, ElementTree.
Я бы смотрел в сторону DOM и, при необходимости, дополнял интерфейс, дописывал бы утилитарный функционал, облегчающий работу с DOM.
..bw
Офлайн
А в чем разница между DOM и ElementTree?
Офлайн
Попробовал ElementTree:
Негативные выводы:
1. у элемента нельзя узнать родителя без дополнительных нетривиальных телодвижений.
2. чтобы распечатать красивый xml - нужно писать свою функцию.
3. никак не могу задать текст юникодом (русскими буквами) как не пытаюсь - всегда получаю фигню
Позитивные:
1. Все довольно просто и интуитивно.
2. Для доступа к тексту элемента есть атрибут text (а не отдельная нода, как обычно)
Отредактировано (Авг. 27, 2008 14:43:32)
Офлайн
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)
Офлайн
Всегда использую xml.dom.minidom, по-моему довольно функционально и не менее интуитивно
Офлайн
Как не кручу - русские буквы получаются написаны энтитями:
# -*- coding: UTF-8 -*-
import xml.etree.ElementTree as ET
description = ET.Element('description')
description.text = u'Я говорю по русски'
print ET.tostring(description)
Офлайн
Я же писал: 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>'"
Офлайн
Шайтан, заработало =)
Вроде, что я так делал.
Видимо сонный был…
Отредактировано (Авг. 27, 2008 15:47:09)
Офлайн