如何在XPath中使用like?

15

我有一个带过滤器的页面。例如,我有这段代码:

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

这段代码选择的数据与txtSearch文本框中输入的LastName不相等,然后将其从结果集中移除,以便将结果集过滤为等于txtSearch文本框中的LastName。

我对这段代码的问题在于它应该是等于(=)txtSearch.value,而我想要的是结果集LIKEtxtSearch.value。我的页面上的情况是,当我在txtSearch文本框中键入“'santos'”时,其结果集是所有带有“'santos'”姓氏的人。但是当我键入“'sant'”时,没有任何内容显示。我想要与“'santos'”相同的结果集,因为它们都包含“sant”。

3个回答

17

5
你可以使用“start-with”函数和“not”函数。 参考链接:http://www.w3schools.com/xpath/xpath_functions.asp
xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(starts-with(@LastName,'"+ txtSearch.value +"'))]");

3
您可以使用XPath的contains()函数:
xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(contains(@LastName,'"+txtSearch.value+"'))]");

我无法让它工作。我正在寻找“bro”,因为我想要获取的姓氏是“Broerman”。我收到了一个错误,上面写着:错误:预期令牌“]”找到“NAME”。//PeopleList/Row[not-->contains<--(@LastName, 'bro')] - edsamiracle
哦,对不起,应该是 not(contains(...)) - Khue Vu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接