我有一个带有谓词的 XPath 表达式,它使用 XPathNavigator.Select 方法从嵌套元素中选择一个人的姓名和 ID。
这有效:
root/all_clients/client/client_name_and_ID[client_ID = 'xxx']
这也有效:
root/all_clients/client[client_name_and_ID/client_ID = 'xxx']/client_name_and_ID
当我将谓词提升到一个新的水平时,它不起作用:
root/all_clients[client/client_name_and_ID/client_ID = 'xxx']/client/client_name_and_ID
我没有得到任何过滤,而是整个集合。
这是由于 XPath、ASP.NET 中固有的限制,还是我在做一些愚蠢的事情?
以下是相关 XML 文件的片段:
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:///n:\Projects\XML\Medical\Example_01.xsd">
<all_clients>
<client>
<client_name_and_ID>
<first_name>Fred</first_name>
<middle_name>James</middle_name>
<last_name>Bowman</last_name>
<client_ID>1</client_ID>
</client_name_and_ID>
</client>
<client>
<client_name_and_ID>
<first_name>Mark</first_name>
<middle_name>David</middle_name>
<last_name>Colder</last_name>
<client_ID>2</client_ID>
</client_name_and_ID>
</client>
<client>
<client_name_and_ID>
<first_name>Joe</first_name>
<last_name>Lewis</last_name>
<client_ID>3</client_ID>
</client_name_and_ID>
</client>
<client>
<client_name_and_ID>
<first_name>Sam</first_name>
<last_name>Plank</last_name>
<client_ID>4</client_ID>
</client_name_and_ID>
</client>
</all_clients>
</root>