首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xmlrpclib的缺省int值

使用xmlrpclib的缺省int值
EN

Stack Overflow用户
提问于 2016-05-27 13:55:36
回答 1查看 348关注 0票数 1

我试图执行以下代码,但是xmlrpclib引发了一个异常:

代码语言:javascript
复制
>>> import xmlrpclib
>>> data = """<?xml version="1.0"?> 
... <methodCall>
...     <methodName>test_method</methodName>
...     <params>
...         <param>
...             <value>
...                 <int/>
...             </value>
...         </param>
...     </params>
... </methodCall>"""
>>> xmlrpclib.loads(data)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1141, in loads
    p.feed(data)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 558, in feed
    self._parser.Parse(data, 0)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 829, in end
    return f(self, join(self._data, ""))
  File "/usr/lib64/python2.7/xmlrpclib.py", line 864, in end_int
    self.append(int(data))
ValueError: invalid literal for int() with base 10: ''

如果我将<int/>替换为<int></int>,则错误是相同的;但是对于<int>0</int>,则不会引发任何例外。python3和xmlrpc.client的结果相同。

我试图在PHP上做同样的事情,而且它没有遇到任何麻烦:

代码语言:javascript
复制
php > $data = '<?xml version="1.0"?><methodCall><methodName>test_method</methodName><params><param><value><int/></value></param></params></methodCall>';
php > print_r(xmlrpc_decode($data));
Array
(
    [0] => 0
)

来自文档实现的.NET还意味着<int/>将被转换为0:

如果XML成员丢失了相应的.NET结构成员,则如果使用了非空类型,则将其相应的结构成员设置为空,而不是默认值,例如,对于整数使用null而不是零。

这种行为是Python实现中的错误吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-28 03:14:47

)这个猴子补丁修复了end_int()处理空数据的方式。在调用xmlrpclib.loads(数据)之前的示例中:

代码语言:javascript
复制
class MyUnmarshaller(xmlrpclib.Unmarshaller):

    def end_int(self, data):
        self.append(int(data or "0"))
        self._value = 0
    dispatch = xmlrpclib.Unmarshaller.dispatch
    dispatch["i4"] = end_int
    dispatch["i8"] = end_int
    dispatch["int"] = end_int

xmlrpclib.Unmarshaller = MyUnmarshaller
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37485334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档