在python中通过XML-RPC发送对象(递归数据结构)
我需要在 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">
我认为此异常是由于其复杂的结构而引发的。因为xml-rpc只支持基本数据类型。我无法使用字典,因为我需要在我的客户端同行中获得引用。当我使用带有引用的字典时,它会给出与上面相同的错误。 我无法使用pickle,它需要与语言无关。
您对通过 XML-RPC 本机发送对象有什么建议吗?也许如何创建我自己的数据类型以 xml 格式发送它?
I need to send an object through XML-RPC in python. My object consist of composite data type to populate a tree structure:
class Node(object):
'''Composite data type '''
def __init__(self, pData, pParent=None):
self.mData = pData
self.mParent = pParent
self.mChildren = []
self.mParent
is reference to its parent node. So I have a recursive data structures to create this structure. When I try to send this data type directly by XML-RPC, it gives this error:
xmlrpclib.Fault: <Fault 1: "<type 'exceptions.TypeError'>:cannot marshal recursive dictionaries">
I think this exception raised due to its complex structure. Because xml-rpc supports only basic data types. I couldn't use dictionaries, because I need to have the references in my client peer. When i use dictionaries with references, it gives the same error above.
I couldn't use pickle, It needs to be language independent.
Do you have any suggestion to send an object through XML-RPC natively? Maybe how to create my own data type to send it in xml format?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当
您
想要通过网络传输 Python 对象。
由于 XMLRPC 基于 XML(顾名思义),因此您无法在没有序列化的情况下通过网络传输 Python 对象。
Look at
http://www.xs4all.nl/~irmen/pyro3/
when you want to transfer Python objects over the wire.
Since XMLRPC is based on XML -as the name implies - you can not transfer Python objects over the wire without serialization.