2010-06-08 18 views

risposta

2

Non so di uno. A meno che il numero xmlrpc non contenga ... Nel caso in cui stiate pensando di far girare il vostro: fare qualsiasi cosa con ElementTree è un piacere, rispetto alla maggior parte delle altre librerie XML.

Ma, dal momento che probabilmente si otterrebbe una rappresentazione non standardizzata, sarebbe necessario controllare entrambe le parti, giusto? Allora perché non scegliere semplicemente json, pickle o qualcosa che è già lì?

Nel caso in cui si desidera utilizzare il modulo xmlrpclib:

xmlrpclib.dumps(data) 

Foresta menziona limitazioni xmlrpclib, che è un buon punto. Alcuni che ho visto io: gli interi non possono essere più di 2^31-1 o la biblioteca si lamenterà. I valori "Nessuno" in genere non sono OK, ma puoi aggirare il problema. Ci sono probabilmente anche altre limitazioni.

A parte questo, il protocollo xmlrpc è piuttosto dettagliato. se hai bisogno di preoccuparti di quanti dati vengono inviati, non è il migliore. Ma nessuna versione XML sarà molto efficiente.

3

Non troverai nulla per xml coerente come json, perché xml non conosce i tipi di dati. Dipende da te seguire le convenzioni o applicare l'aderenza a un file di schema xml.

Detto questo, se siete disposti ad accettare la mappatura struttura di dati XML-RPC e alcune limitazioni, controlla il pacchetto xmlrpclib che vive nella libreria standard di 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

In particolare, il formato xmlrpc presenta alcune limitazioni rispetto a json ... solo stringhe per le chiavi dict. No nessuno, booleans. (correggimi se sbaglio!) –

+0

Correzione: ti sbagli. :) Anche le chiavi Dict devono essere stringhe in json. I valori booleani sono supportati da xmlrpclib, come None se si passa l'argomento 'allow_none = True' ai dump. –

2

Non è semplice con xml, come con json perché, non esiste un "mapping di tipi" tra i tipi di dati di xml e python. I dati XML Heck possono essere qualsiasi cosa, come mappati all'interno dell'XSL corrispondente.

Per quanto riguarda l'API è interessato, che si sta per lo più preoccupato per, vi consiglio Element Tree

Per un buon tutorial su Analizzare XML utilizzando Elemento Albero, vi rimando al Mark Pilgrim's Dive into Python3

3

Si può guardare il modo in cui l'ho fatto in Django: xml_serializer.py e personalizzalo in base alle tue esigenze.

Problemi correlati