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

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

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

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

etree.tostring(element, encoding=None)

etree.ElementTree(element).write(file, encoding='us-ascii')
regall
Всегда использую xml.dom.minidom, по-моему довольно функционально и не менее интуитивно
shiza
Как не кручу - русские буквы получаются написаны энтитями:
# -*- coding: UTF-8 -*-
import xml.etree.ElementTree as ET

description = ET.Element('description')
description.text = u'Я говорю по русски'
print ET.tostring(description)
Получаю & # 1087;…..
poltergeist
Я же писал: 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>'"
shiza
Шайтан, заработало =)
Вроде, что я так делал.
Видимо сонный был…
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