在Python中通过XML-RPC发送对象(递归数据结构)
我需要通过XML-RPC在Python中发送一个对象。我的对象包含复合数据类型,用来填充一个树形结构:
class Node(object):
'''Composite data type '''
def __init__(self, pData, pParent=None):
self.mData = pData
self.mParent = pParent
self.mChildren = []
self.mParent
是指向它父节点的引用。所以我有一个递归的数据结构来创建这个结构。当我尝试直接通过XML-RPC发送这个数据类型时,出现了这个错误:
xmlrpclib.Fault: <Fault 1: "<type 'exceptions.TypeError'>:cannot marshal recursive dictionaries">
我觉得这个异常是因为它的结构太复杂了。因为XML-RPC只支持基本数据类型。我不能使用字典,因为我需要在我的客户端中保持引用。当我使用带有引用的字典时,出现了同样的错误。
我也不能使用pickle,因为它需要是语言无关的。
你有什么建议可以通过XML-RPC原生发送一个对象吗?也许可以教我如何创建自己的数据类型,以便以XML格式发送?
1 个回答
1
可以看看这个链接:
http://www.xs4all.nl/~irmen/pyro3/
如果你想在网络上传输Python对象的话。
因为XMLRPC是基于XML的——这从名字就能看出来——所以你不能直接在网络上传输Python对象,必须先把它们转换成可以传输的格式,这个过程叫做序列化。