2010-06-08 12 views

Odpowiedz

2

Nie znam jednego. Chyba że xmlrpc liczy ... Jeśli myślisz o toczeniu własnych: Robiąc wszystko z ElementTree to przyjemność, w porównaniu z większością innych bibliotek XML.

Ale ponieważ prawdopodobnie skończysz z reprezentacją, która nie byłaby zindywidualizowana, musiałbyś kontrolować obie strony, prawda? Dlaczego więc nie po prostu wybrać json, pickle lub coś, co już tam jest?

W przypadku, gdy chcesz użyć modułu xmlrpclib:

xmlrpclib.dumps(data) 

Las wymienia ograniczenia w xmlrpclib, która jest dobrym punktem. Niektóre, które widziałem: Integer nie może być większy niż 2^31-1 lub biblioteka będzie narzekać. Wartości "None" zwykle nie są poprawne, ale można się z tym obejść. Istnieją również inne ograniczenia.

Poza tym, protokół xmlrpc jest dość szczegółowy. jeśli musisz się martwić o to, ile danych jest wysyłanych, to nie jest najlepszy. Ale żadna wersja XML nie będzie bardzo wydajna.

3

Nie znajdziesz niczego dla xml tak spójnego jak json, ponieważ xml nie wie o typach danych. To zależy od ciebie do przestrzegania konwencji lub egzekwowania przestrzegania pliku schematu xml.

W takiej sytuacji, jeśli jesteś w stanie zaakceptować odwzorowanie struktury danych XML-RPC i kilka ograniczeń, sprawdź pakiet xmlrpclib że mieszka w standardowej biblioteki Pythona:

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

W szczególności ten format xmlrpc ma pewne ograniczenia w porównaniu do json ... only stringów dla kluczy dyktujących. Nie, żaden, booleans. (popraw mnie jeśli się mylę!) –

+0

Korekta: jesteś w błędzie. :) Klucze Dicta również muszą być ciągami w jsonie. Wartości logiczne są obsługiwane przez xmlrpclib, podobnie jak None, jeśli przekazujesz do zrzutu argument 'allow_none = True'. –

2

To nie jest tak proste jak w przypadku XML, tak jak w przypadku json, ponieważ nie ma "mapowania typów" między typami danych XML i Pythona. Heck Dane XML mogą być dowolne, odwzorowane w odpowiednim XSL.

chodzi o API jest zaniepokojony, które są w większości nie przejął, polecam Element Tree

Na dobry tutorial analizowania XML za pomocą elementu Tree, odsyłam do Mark Pilgrim's Dive into Python3

Powiązane problemy