2010-06-08 12 views

Respuesta

2

No conozco ninguno. A menos que xmlrpc cuente ... En caso de que esté pensando en enrollar el suyo: Hacer cualquier cosa con ElementTree es un placer, en comparación con la mayoría de las otras bibliotecas XML.

Pero, dado que probablemente termines con una representación que no estaría estandarizada, necesitarías controlar ambas partes, ¿no? ¿Por qué no solo selecciona json, pickle o algo que ya está allí?

En caso de que quiera utilizar el módulo xmlrpclib:

xmlrpclib.dumps(data) 

Bosque menciona limitaciones en xmlrpclib, que es un buen punto. Algunos que me he visto a mí mismo: los enteros no pueden ser más de 2^31-1 o la biblioteca se quejará. Los valores "Ninguno" generalmente no son correctos, pero puede evitarlos. Probablemente haya otras limitaciones también.

Aparte de eso, el protocolo xmlrpc es bastante detallado. si necesita preocuparse por la cantidad de datos que se envía, no es la mejor. Pero ninguna versión XML será muy eficiente.

3

No encontrará nada para xml tan consistente como json, porque xml no sabe acerca de los tipos de datos. Depende de usted seguir las convenciones o hacer cumplir la adhesión a un archivo de esquema xml.

Dicho esto, si usted está dispuesto a aceptar la asignación de estructura de datos XML-RPC y algunas limitaciones, revisar el paquete de xmlrpclib que vive en la biblioteca estándar de 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

En particular, ese formato xmlrpc tiene algunas limitaciones en comparación con json ... solo cadenas para las claves dict. No, ninguno, booleanos. (¡Corrígeme si estoy equivocado!) –

+0

Corrección: estás equivocado. :) Las claves dict deben ser cadenas en json, también. Los valores booleanos son soportados por xmlrpclib, como lo es None si pasa el argumento 'allow_none = True' a los volcados. –

2

No es tan directo con xml, como lo es con json porque, no hay "mapeo tipo" entre los tipos de datos de xml y python. Los datos de Heck XML pueden ser cualquier cosa, según se mapeen dentro del XSL correspondiente.

En cuanto a la API se refiere, que está mayormente preocupan de, recomiendo Element Tree

Para un buen tutorial sobre Análisis de XML usando árbol de elementos, le remito a Mark Pilgrim's Dive into Python3

Cuestiones relacionadas