XPath类似于Regex一个或多个



我要选择的东西是1到N的同类型节点嵌套的子节点。xml看起来像这样:

<Folder>
   <Folder>
      <Folder>
         <Folder>
            <File></File>
         </Folder>
      </Folder>
   </Folder>
</Folder>

<Folder>
   <File></File>
</Folder>

我选择的文件必须是文件夹的子文件夹,这些文件夹中没有一个可以有任何其他的文件夹作为祖先。我不想使用后代来获取所有文件,只是为了检查它们的每个祖先。我宁愿遵循文件夹链,然后在文件夹后的任何文件直接停止。类似regex的+是我要找的(./Folder+/File)但我不知道它是否存在

XPath没有"重复轴"结构;您需要使用XPath轴和谓词条件的组合来实现您想要的结果。

下面是一个表达式,它获取Folder元素的所有File元素的子元素,然后检查Folder元素的祖先是否都是Folder元素:

//Folder/File[fn:not(ancestor::*/fn:local-name(.) != "Folder")]

相关内容

最新更新