Библиотека XML, подобная simplejson/json? - Python

есть ли подобная библиотека к simplejson, который включил бы быструю сериализацию данных к и от XML.

e.g. json.loads('{vol:'III', title:'Magical Unicorn'}')

e.g. json.dumps([1,2,3,4,5])

Какие-либо идеи?

5
задан RadiantHex 8 June 2010 в 10:58
поделиться

5 ответов

Вы можете посмотреть, как они это сделали в Django: xml_serializer.py и адаптируйте его под свои нужды.

3
ответ дан 13 December 2019 в 19:22
поделиться

Это не так просто с xml, как с json, потому что между типами данных xml и python нет "сопоставления типов". Данные XML могут быть любыми, как они отображены в соответствующем XSL.

Что касается API, о котором вы в основном беспокоитесь, я рекомендую Element Tree

За хорошим учебником по разбору XML с помощью Element Tree я отсылаю вас к Mark Pilgrim's Dive into Python3

2
ответ дан 13 December 2019 в 19:22
поделиться

Я не знаю ни одного. Если только xmlrpc не считается... На случай, если вы думаете о создании своего собственного: ElementTree - это удовольствие, по сравнению с большинством других библиотек XML.

Но, поскольку в итоге вы, вероятно, получите нестандартизованное представление, вам нужно будет контролировать обе стороны, верно? Тогда почему бы просто не выбрать json, pickle или что-то, что уже есть?

На случай, если вы хотите использовать модуль xmlrpclib:

xmlrpclib.dumps(data)

Forest упоминает ограничения в xmlrpclib, что является хорошим замечанием. Некоторые из них я видел сам: Целое число не может быть больше, чем 2^31-1, иначе библиотека будет жаловаться. Значения "None" обычно не подходят, но это можно обойти. Возможно, есть и другие ограничения.

Кроме того, xmlrpc-протокол довольно многословен. Если вам нужно беспокоиться о том, сколько данных будет отправлено, это не лучший вариант. Но ни одна XML-версия не будет очень эффективной.

2
ответ дан 13 December 2019 в 19:22
поделиться

Вы не найдете для xml ничего столь же последовательного, как json, потому что xml не знает о типах данных. Он зависит от вас, чтобы следовать соглашениям или обеспечить соблюдение файла схемы xml.

Учитывая это, если вы готовы принять отображение структуры данных XML-RPC и некоторые ограничения, посмотрите пакет xmlrpclib, который находится в стандартной библиотеке Python:

http://docs.python.org/library/xmlrpclib.html#convenience-functions

>>> import xmlrpclib
>>> s = xmlrpclib.dumps( ({'vol':'III', 'title':'Magical Unicorn'},))
>>> print s
<params>
<param>
<value><struct>
<member>
<name>vol</name>
<value><string>III</string></value>
</member>
<member>
<name>title</name>
<value><string>Magical Unicorn</string></value>
</member>
</struct></value>
</param>
</params>

>>> xmlrpclib.loads(s)[0]
({'vol': 'III', 'title': 'Magical Unicorn'},)
>>> 
3
ответ дан 13 December 2019 в 19:22
поделиться

А как насчет lxml ?

1
ответ дан 13 December 2019 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: