如何在XPath中使用?

问题描述 投票:12回答:3

我有一个用过滤器搜索的页面。我有这个代码,例如,

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[@LastName != '"+txtSearch.value+"']");
xmlTempResultSearch.removeAll();

这将选择与txtSearch文本框中输入的LastName不相等的数据,然后将其从结果集中删除,以使其过滤为等于txtSearch文本框上的姓氏。

我对这段代码的问题是它应该与txtSearch.value相等(=),我想要的是我想要的结果集就像txtSearch.value一样。在我的页面上发生的是当我在txtSearch文本框中键入'santos'时,其结果集是所有带有'santos'的姓氏。但是当我输入'sant'时,什么都没有出现。我希望使用'santos'获得相同的结果集,因为它包含'sant'

xpath operator-keyword
3个回答
14
投票

您可以使用所有XPath(1.0)字符串函数。如果您有XPath 2.0,那么您甚至可以使用RegEx。

contains()

starts-with()

substring()

substring-before()

substring-after()

concat()

translate()

string-length()

在XPath 1.0中没有** ends-with(),但它可以用这个XPath 1.0表达式轻松表达**:

substring($s, string-length($s) - string-length($t) +1) = $t

当字符串true()以字符串$s结尾时,恰好是$t


4
投票

您可以使用启动功能而不是功能。参考:

http://www.w3schools.com/xpath/xpath_functions.asp

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(starts-with(@LastName,'"+ txtSearch.value +"'))]");

2
投票

你可以使用XPath的contains()函数:

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(contains(@LastName,'"+txtSearch.value+"'))]");
© www.soinside.com 2019 - 2024. All rights reserved.