2010-06-08 3 views

ответ

2

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

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

В случае, если вы хотите использовать модуль XMLRPCLIB:

xmlrpclib.dumps(data) 

лес упоминает ограничения в XMLRPCLIB, что является хорошей отправной точкой. Некоторые из тех, что я видел сам: целые числа не могут быть больше 2^31-1, или библиотека будет жаловаться. Значения «Нет» обычно не в порядке, но вы можете обойти это. Возможно, существуют и другие ограничения.

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

3

Вы не найдете ничего для 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'},) 
>>> 
+0

В частности, этот формат xmlrpc имеет некоторые ограничения по сравнению с json ... только строки для ключей dict. Нет ни одного, boolean. (исправьте меня, если я ошибаюсь!) –

+0

Коррекция: вы ошибаетесь. :) Ключи Dict тоже должны быть в json. Булевы значения поддерживаются xmlrpclib, как и None, если вы передаете аргумент 'allow_none = True' для дампов. –

2

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

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

Для хорошего учебника по Синтаксическому XML с помощью элемента дерева, я отсылаю вас к Mark Pilgrim's Dive into Python3

3

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

Смежные вопросы