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

在python中通过XML-RPC发送对象(递归数据结构),python,xml-rpc,composite,recursive-datastructures,xmlrpclib,Python,Xml Rpc,Composite,Recursive Datastructures,Xmlrpclib,我需要在python中通过XML-RPC发送一个对象。我的对象由复合数据类型组成,用于填充树结构: class Node(object): '''Composite data type ''' def __init__(self, pData, pParent=None): self.mData = pData self.mParent = pParent self.mChildren = [] self.mParent是对其父节点的引用。所以我有一个递归的数据结构来创

我需要在python中通过XML-RPC发送一个对象。我的对象由复合数据类型组成,用于填充树结构:

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">
xmlrpclib.Fault:
我认为这一例外是由于其复杂的结构引起的。因为xml rpc只支持基本数据类型。我不能使用字典,因为我需要在我的客户机中有引用。当我使用带有引用的词典时,上面给出了相同的错误。 我不能使用pickle,它需要独立于语言

您是否建议通过XML-RPC本机发送对象?也许如何创建我自己的数据类型以xml格式发送?

查看

当您希望通过线路传输Python对象时


由于XMLRPC是基于XML的(顾名思义),如果不进行序列化,就无法通过网络传输Python对象。

谢谢您的回复。正如您所说的,在发送对象之前,它需要以适当的XML表示形式序列化。例如,当我发送一个字符串变量时,XML-RPC会自动生成一个字符串变量。那么,我是否也可以将对象序列化为xml格式(无需pickle、更改xmlrpclib中的代码)并将其发送给另一个对等方?