如何用Opa解析XML?

时间:2012-06-06 22:49:57

标签: xml parsing xml-parsing opa

如果要将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

1 个答案:

答案 0 :(得分:2)

好的,这就是你提到的三个功能:

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

因此,如果你得到一个字符串响应并希望处理它,那么你通常会:

  1. 使用xml
  2. 将其解析为Xmlns.try_parse
  3. 构建了xml_parser
  4. 使用Xml_parser.try_parse调用它以获取XML数据的结构表示。
  5. 如果您立即将数据作为XML获取,则可以跳过上面的第一步。如果有帮助,请告诉我。