【发布时间】:2016-07-30 01:29:46
【问题描述】:
我有一个如下所示的 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 表达式来捕获:
- 目录名称中包含
MySearchKey的任何directory的name值 - 目录节点内的任何
file的name值,其中目录名称中包含MySearchKey
当然,名称中可能有没有MySearchKey 的目录,我对它们不感兴趣,对它下面的文件也不感兴趣。
我需要过滤包含MySearchKey 的目录以及其中的任何文件
对于本例,输出如下所示:
directory name="/MyServices/MySearchKey"
directory name="/MyServices/MySearchKey/anything_else"
directory name="/MyServices/MySearchKey/anything_else/V1"
file name="myfile_1"
到目前为止,我能够编写捕获目录名称的//directory[contains(@name, '/ondisk/')]/@name,但我不知道如何添加它们包含的文件。
如何在同一个 XPath 表达式中添加文件名?
问候
【问题讨论】: