【问题标题】:How to parse XML with Opa?如何用 Opa 解析 XML?
【发布时间】:2012-06-11 00:17:25
【问题描述】:

如果您想将 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

【问题讨论】:

    标签: xml parsing xml-parsing opa


    【解决方案1】:

    好的,这就是你提到的三个函数的作用:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-17
      • 2013-01-31
      • 2016-10-30
      • 2022-01-24
      • 2019-03-24
      • 2011-12-29
      • 2019-12-19
      • 1970-01-01
      相关资源
      最近更新 更多