saxon - 使用 saxon & XPath 3.1 解析 JSON 文件
问题描述
这是从 Java 应用程序调用 Saxon 的情况。我了解 Saxon 可以使用 XPath 3.1 对 JSON 文件运行查询。关于这个的几个问题:
- 哪里有如何做到这一点的例子?我已经完成了搜索并找到了很多关于这样做的细节的答案,但注意到如何读取文件并执行查询。它和 XML 一样吗?
- 是否可以为 JSON 提供一个模式文件,以便正确输入返回值?如果是这样,怎么做?
- XQuery 是否也能够对 JSON 执行查询?
- Saxon 的哪个版本支持这个?(我们使用的是 9.9.1.1,想知道是否需要升级。)
解决方案
从技术上讲,您不会对 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上详细描述了连续撒克逊版本的变化细节
推荐阅读
- c - 我可以在阻塞和非阻塞行为之间反复切换吗?
- python - 在 Windows 7 上安装 Python 3.6 时出现问题:需要 Service Pack 1 才能继续安装
- vb.net - HTTP cookie 不会保存
- ns-3 - 如何更改 NS3 中的 TCP 负载?
- linux - 可执行文件是否具有与运行它的用户相同的文件权限?
- javascript - 是什么决定了 Javascript 中的位字节序?
- php - 我收到 NULL 数据以响应 cURL 请求
- angular - 管道操作符时如何返回可观察到的`forkJoin`
- html - 使用 Angular 4 中的下拉列表和文本框进行过滤
- json - 无法评估 Jackson 反序列化,无法处理托管/反向引用“defaultReference”(Json)