Altova XMLSpy 2024 Professional Edition

针对JSON的XQuery 3.1表达式

由于在JSON数据结构中通常使用对象和数组,因此会用XQuery 3.1查找运算符 ?来定位JSON对象(从XQuery的角度看,本质上是映射)和JSON数组内的节点。这种定位节点的方式与编写路径表达式定位XML文档中的节点的方式不同。其中,斜杠运算符/用于连接路径表达式中的步骤(例如:items/*)。在针对JSON的XQuery表达式中,斜杠运算符不是用于定位节点的。

 

针对JSON的XQuery表达式示例

 

?items?*

含义:查找子节点items,然后查找其所有子节点。请注意,items应该是上下文节点的子节点。

 

?Artists?1?Albums?2?Name

含义:查找子节点Artists,然后查找其第一个子节点。在该节点内,查找子节点Albums,然后查找其第二个子节点。现在返回第二个子节点的Name节点。

 

?Tracks?*[contains(?Writer, 'Brian')]

含义:查找子节点Tracks,然后查找其所有子节点。在查找子节点的同时,查找每个子节点的Writer节点的子节点,然后仅选择那些包含'Brian’字符串的节点。请注意,该表达式中有三个查找运算符。每个运算符都在一个新的步骤中使用,在每一步中必须查找一个节点集。

 

?Artists?*[?Name="Queen"]?Albums?*?Name

含义:在根对象内,查找子节点Artists,然后查找其所有具有"Queen”值的Name节点的子节点。在这些节点内,查找所有子Albums节点,然后查找其子节点。在这些子节点内,查找(并返回)各自的Name节点。在下方截图中,该表达式连同目标JSON文档的JSON网格视图表示形式一起显示在XPath/XQuery窗口中。

 

inc-XQueryExpForJSON

 

© 2017-2023 Altova GmbH