如果要将Opa Web客户端与XML-RPC服务器连接。发送请求的正确方法可能是
xml request_body = @xml(
<methodCall>
<methodName>my_rpc_method</methodName>
<params>some_rpc_params</params>
</methodCall>
)
request = WebClient.Post.of_xml(
{WebClient.Post.default_options with
content: {some: request_body}
}
)
WebClient.Post.try_post_with_options_async(
server_uri,
request,
callback
)
function callback(response) {
...
}
现在,将服务器响应解析回Opa XML数据结构的正确方法是什么?我目前已经为此创建了自己的XML解析器,但这肯定不是最佳实践。
API显示了几个XML解析函数,如:
但哪一个是正确的呢?该文档(尚未)说明了它们的用法。或者通过WebClient.Result.as_xml直接以XML格式转换服务器响应可能是正确的吗?
我创建了一个包含给定问题的可运行代码的repository。随意分叉并修复它。
将这样的XML服务器响应解析为相应的数据结构的最佳(也是最简单)方法是什么?
JHannes
答案 0 :(得分:2)
好的,这就是你提到的三个功能:
Xml_parser.try_parse
是一个调用 XML解析器的函数。 XML解析器使用xml_parser
关键字构建,有点类似于Opa的parser
,除了它们解析XML而不是文本。XmlConvert.of_string
是一个将string
转换为xml
的函数,因此它只是一个简单的函数,只构建由文本节点组成的XML。Xmlns.try_parse
尝试进行相反的转换:即它需要string
并尝试将其解析为`xml'。因此,如果你得到一个字符串响应并希望处理它,那么你通常会:
xml
Xmlns.try_parse
xml_parser
Xml_parser.try_parse
调用它以获取XML数据的结构表示。如果您立即将数据作为XML获取,则可以跳过上面的第一步。如果有帮助,请告诉我。