0
我有一個XML文件,該文件是這樣的:XPath表達式來捕捉多個值
<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
在目錄名稱中有MySearchKey
name
任何file
的值,它位於包含MySearchKey
的目錄節點中目錄名
當然,也有可能是目錄W的名字/ O 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表達式中添加文件名?
問候
我 「的XPath錯誤:無效的表達式」 指向最後'(' PS:對於測試建議,我用xmllint運行它(以防它在語法上有所不同) – Renato
奇怪,我在這裏測試了http://www.xpathtester.com/xpath並且它工作正常 – arop
我使用xmllint運行它(以防它在語法上有所不同) 我得到以下錯誤: '/> xpath // directory [contains(@name,'/ MySearchKey /')] /( (@name | file/@ name)' 'XPath error:Invalid expression' '// directory [contains(@name,'/ MySearchKey /')] /(@ name | file/@ name)' '' 'xmlXPathEval:evaluation failed' '對象爲空(NULL)' (我在MySearchKey之後加了一個前導'/'來限制搜索,就像'MySearchKey_somethingelse'應該**不匹配) – Renato