首页 > 解决方案 > 使用 saxon & XPath 3.1 解析 JSON 文件

问题描述

这是从 Java 应用程序调用 Saxon 的情况。我了解 Saxon 可以使用 XPath 3.1 对 JSON 文件运行查询。关于这个的几个问题:

  1. 哪里有如何做到这一点的例子?我已经完成了搜索并找到了很多关于这样做的细节的答案,但注意到如何读取文件并执行查询。它和 XML 一样吗?
  2. 是否可以为 JSON 提供一个模式文件,以便正确输入返回值?如果是这样,怎么做?
  3. XQuery 是否也能够对 JSON 执行查询?
  4. Saxon 的哪个版本支持这个?(我们使用的是 9.9.1.1,想知道是否需要升级。)

标签: saxon

解决方案


从技术上讲,您不会对 JSON 文件运行查询;您可以针对解析 JSON 文件产生的数据结构运行它们,该文件是映射和数组的结构。您可以使用 parse-json() 或 json-doc() 函数解析 JSON 文件,然后使用适用于地图和数组的运算符查询结果。其中一些(及其使用示例)显示在规范中

https://www.w3.org/TR/xpath-31/#id-maps-and-arrays

谷歌搜索“query maps arrays JSON XPath 3.1”会发现很多有用的材料。或获取 Priscilla Walmsley 的书:http ://www.datypic.com/books/xquery/chapter24.html

数据类型:字符串、数字和布尔值这些 JSON 固有的数据类型可以通过它们的形式自动识别。无法使用模式进行进一步的输入。

XQuery 是 XPath 的超集,但就 JSON/Maps/Arrays 而言,我认为 XPath 中的设施与 XQuery 中的设施完全相同。

Saxon 在每个后续版本中都增加了一些额外的一致性和性能。9.9 的覆盖范围相当完整;10.0 增加了一些优化(比如一个新的内部数据结构,用于键都是字符串的映射,比如你在解析 JSON 时得到的)。在http://www.saxonica.com/documentation/index.html#!changes上详细描述了连续撒克逊版本的变化细节


推荐阅读