我有一个xml文件,如下所示:
<directory name="/MyServices/MySearchKey" read="true" write="true" show="true" exec="true" del="true" dir="true" reference="true" list="true">
<Access xmlns:func="http://exslt.org/functions">
<r>on</r>
<w>on</w>
<a>on</a>
<d>on</d>
<x>on</x>
</Access>
<directory name="/MyServices/MySearchKey/anything_else" read="true" write="true" show="true" exec="true" del="true" dir="true" reference="true" list="true">
<Access xmlns:func="http://exslt.org/functions">
<r>on</r>
<w>on</w>
<a>on</a>
<d>on</d>
<x>on</x>
</Access>
<file name="myfile_1">
<size>5353</size>
<modified>2016-05-20 00:39:48</modified>
<Access xmlns:func="http://exslt.org/functions">
<r>on</r>
<w>on</w>
<a>on</a>
<d>on</d>
<x>on</x>
</Access>
</file>
</directory>
</directory>
我正在尝试编写一个可捕获的唯一XPath表达式:
name
的任何directory
的{{1}}值MySearchKey
的目录节点内的任何name
的{{1}}值当然,名称中可能有名为file
的目录,我对它们没有任何兴趣,也不会对其下的文件感兴趣。
我需要过滤包含MySearchKey
及其中任何文件的目录
对于此示例,输出将如下所示:
MySearchKey
到目前为止,我能够编写MySearchKey
来捕获dirs名称,但我不知道如何添加它们包含的文件。
如何在同一个XPath表达式中添加文件名?
此致
答案 0 :(得分:1)
您可以尝试以下代码:
//directory[contains(@name, '/MySearchKey')]/(@name | file/@name)
或XPath 1.0:
//directory[contains(@name, '/MySearchKey')]/@name |
//directory[contains(@name, '/MySearchKey')]/file/@name