3

如果您想将 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 形式转换服务器响应是否正确?

我创建了一个存储库,其中包含具有给定问题的可运行代码。随意分叉和修复它。

将这样的 XML 服务器响应解析为相应的数据结构的最佳(也是最简单)的方法是什么?

汉尼斯

4

1 回答 1

2

好的,这就是您提到的三个功能的作用:

  • Xml_parser.try_parse是一个调用XML 解析器的函数。XML 解析器是使用xml_parser关键字构建的,有点类似于 Opa 的parser,除了它们解析 XML,而不是文本。
  • XmlConvert.of_string是将 a 转换为 的函数stringxml因此它只是构建由文本节点组成的 XML 的简单函数。
  • Xmlns.try_parse尝试相反的转换:即它需要 astring并尝试将其解析为“xml”。

因此,如果您收到字符串响应并想要处理它,那么您通常会:

  1. 将其解析为xml使用Xmlns.try_parse
  2. 建了一个xml_parser
  3. 调用它Xml_parser.try_parse以获取 XML 数据的结构表示。

如果您立即以 XML 格式获取数据,则可以跳过上面的第一步。让我知道这是否有帮助。

于 2012-06-10T19:35:59.433 回答