xml - 如何用 Opa 解析 XML?

标签 xml parsing xml-parsing opa

如果你想连接一个 Opa 网络客户端和一个 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包含具有给定问题的可运行代码。随意 fork 并修复它。

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

杰汉内斯

最佳答案

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

  • Xml_parser.try_parse 是调用 XML 解析器 的函数。 XML 解析器是使用 xml_parser 关键字构建的,有点类似于 Opa 的 parser,只是它们解析 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 格式获取数据,则可以跳过上面的第一步。让我知道这是否有帮助。

关于xml - 如何用 Opa 解析 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923419/

相关文章:

objective-c - 解析二进制MOBI文件: best approach?

c# - xml 解析字符引用 : invalid xmlChar value 0

java - Xml Xpath 值中的多个命名空间

java - 通过 XML 解析器动态将 ZonedDateTime 字符串映射到 LocalDateTime

javascript - 引用未声明的命名空间前缀 : 'soap' when parsing MSXML soap response using selectSingleNode

xml - RELAX NG Compact Syntax 正则表达式支持?

按钮上的 Android ADT 文字

javascript - 使用 javascript/lodash 从输入字符串中解析 html 内容

c# - 在 C# 中解析具有自定义格式的文本文件

java - 如何使用java读取xml中的替代标签?