Web 服务生成的 XML 代码无效

Invalid XML code generated by web service

@service.xml 装饰器似乎在 web services RPC 中损坏了。

@service.xml
def concat(a, b):
    return a + b

结果是:

>>> from urllib import urlopen
>>> r = urlopen("http://127.0.0.1:8000/webservice/default/call/xml/concat/hello/
world")
>>> r.read()
'<?xml version="1.0" encoding="UTF-8"?>helloworld'

缺少最后一部分会产生无效 XML。

但是,JSON 和 CSV 效果很好。

@service.json
def concat(a, b):
    return a + b

测试:

>>> r = urlopen("http://127.0.0.1:8000/webservice/default/call/json/concat/hello
/world")
>>> r.read()
'"helloworld"'

我正在脚手架应用程序的副本中对此进行测试。我是不是遗漏了什么或者这真的是个问题?

我认为这只是书中的一个坏例子。要生成有效的 XML,该函数应该 return 列表或字典(或具有 .as_list.as_dict.custom_xml 方法的对象)。例如:

@service.xml
def concat(a, b):
    return dict(result=a + b)

产生:

<?xml version="1.0" encoding="UTF-8"?>
<document>
  <result>helloworld</result>
</document>