在Python中通过XML-RPC发送对象(递归数据结构)

0 投票
1 回答
2450 浏览
提问于 2025-04-16 18:02

我需要通过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对象,必须先把它们转换成可以传输的格式,这个过程叫做序列化。

撰写回答