2010-06-08 4 views

Répondre

2

Je n'en connais pas. À moins que xmlrpc compte ... Si vous songez à créer le vôtre: faire quelque chose avec ElementTree est un plaisir, comparé à la plupart des autres bibliothèques XML. Mais, puisque vous auriez probablement une représentation qui ne serait pas standardisée, vous devrez contrôler les deux côtés, n'est-ce pas? Alors pourquoi ne pas simplement choisir json, pickle ou quelque chose qui est déjà là?

Si vous voulez utiliser le module xmlrpclib:

xmlrpclib.dumps(data) 

Forêt mentionne des limitations dans xmlrpclib, ce qui est un bon point. Certains que je me suis vu: entiers ne peuvent pas être plus de 2^31-1 ou la bibliothèque va se plaindre. Les valeurs "None" ne sont généralement pas OK, mais vous pouvez contourner cela. Il existe probablement d'autres limitations. En dehors de cela, le protocole xmlrpc est assez verbeux. Si vous avez besoin de vous soucier de la quantité de données envoyées, ce n'est pas la meilleure. Mais aucune version XML ne sera très efficace.

3

Vous ne trouverez rien pour xml aussi cohérent que json, car xml ne connaît pas les types de données. Cela dépend de vous de suivre les conventions ou d'appliquer l'adhésion à un fichier de schéma xml.

Cela dit, si vous êtes prêt à accepter la mise en correspondance de structure de données XML-RPC et quelques limites, consultez le package xmlrpclib qui vit dans la bibliothèque standard 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 particulier, ce format xmlrpc présente certaines limitations par rapport aux chaînes json ... only pour les clés dict. Non, aucun, booléens. (Corrigez-moi si je me trompe!) –

+0

Correction: vous avez tort. :) Les clés Dict doivent aussi être des chaînes dans JSON. Les valeurs booléennes sont supportées par xmlrpclib, de même que None si vous passez l'argument 'allow_none = True' aux dumps. –

2

Ce n'est pas aussi simple avec xml, comme c'est le cas avec json parce qu'il n'y a pas de "mapping" entre les types de données de xml et python. Heck les données XML peuvent être n'importe quoi, comme mappé dans le XSL correspondant.

En ce qui concerne l'API est concerné, que vous êtes surtout pris la peine au sujet, je vous recommande Element Tree

Pour un bon tutoriel sur Parsing XML à l'aide d'arbre Element, je vous renvoie à Mark Pilgrim's Dive into Python3

Questions connexes