针对JSON的XQuery表达式
针对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窗口中。