2010-06-08 34 views

Trả lời

2

Tôi không biết một. Trừ khi xmlrpc đếm ... Trong trường hợp bạn đang suy nghĩ về việc cuộn của riêng bạn: Làm bất cứ điều gì với ElementTree là một niềm vui, so với hầu hết các thư viện XML khác.

Nhưng, vì có thể bạn sẽ kết thúc với một biểu diễn không được chuẩn hóa, bạn sẽ cần phải kiểm soát cả hai bên, đúng không? Sau đó, tại sao không chỉ chọn json, pickle hoặc thứ gì đó đã có ở đó?

Trong trường hợp bạn muốn sử dụng các mô-đun xmlrpclib:

xmlrpclib.dumps(data) 

Forest đề cập đến những hạn chế trong xmlrpclib, đó là một điểm tốt. Một số mà tôi đã nhìn thấy bản thân mình: Số nguyên không thể được nhiều hơn 2^31-1 hoặc thư viện sẽ khiếu nại. Các giá trị "Không" thường không ổn, nhưng bạn có thể giải quyết vấn đề đó. Có lẽ cũng có những hạn chế khác.

Ngoài ra, giao thức xmlrpc khá chi tiết. nếu bạn cần phải lo lắng về số lượng dữ liệu được gửi, nó không phải là tốt nhất. Nhưng không có phiên bản XML nào sẽ rất hiệu quả.

3

Bạn sẽ không tìm thấy bất cứ điều gì cho xml nhất quán như json, bởi vì xml không biết về các loại dữ liệu. Nó phụ thuộc vào bạn để làm theo các quy ước hoặc thực thi tuân thủ một tệp lược đồ xml.

Điều đó đang được nói, nếu bạn sẵn sàng để chấp nhận các XML-RPC lập bản đồ cấu trúc dữ liệu và một vài hạn chế, hãy kiểm tra các gói xmlrpclib sống trong các tiêu chuẩn Python thư viện:

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

Cụ thể, định dạng xmlrpc đó có một số hạn chế so với json ... chỉ các chuỗi cho khóa dict. Không có, booleans. (sửa tôi nếu tôi sai!) –

+0

Hiệu chỉnh: bạn đã sai. :) Các khóa Dict cũng phải là các chuỗi trong json. Các giá trị boolean được hỗ trợ bởi xmlrpclib, như là None nếu bạn chuyển đối số 'allow_none = True' cho các bãi chứa. –

2

Nó không phải là thẳng về phía trước với xml, vì nó là với json bởi vì, không có "loại ánh xạ" giữa các kiểu dữ liệu của xml và python. Dữ liệu XML Heck có thể là bất cứ thứ gì, như được ánh xạ trong XSL tương ứng.

Đối với các API có liên quan, mà bạn đang chủ yếu làm phiền về, tôi khuyên bạn nên Element Tree

Để xem hướng dẫn tốt về phân tích cú pháp XML sử dụng phần tử Tree, tôi giới thiệu bạn đến Mark Pilgrim's Dive into Python3

3

Bạn có thể nhìn cách họ đã làm điều đó ở Django: xml_serializer.py và điều chỉnh theo yêu cầu của bạn.

Các vấn đề liên quan