有没有办法在执行 xpath 查询时忽略大小写



有没有办法在执行 xpath 查询时忽略大小写。请参阅下面的示例。

//xdoc = xml document
//xdoc.outerHTML = "<Query><Filter>Test</Filter</Query>"
var strVal;
//this works - matching node is returned
var xpath = "Filter";
var result = xdoc.evaluate(xpath, xdoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
//strVal is not null
strVal = result.singleNodeValue;

//this does not
var xpath = "filter";
var result = xdoc.evaluate(xpath, xdoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
//strVal is null
strval = result.singleNodeValue;

一种选择是使用 XPath translate将大写字母转换为小写字母。

在这种情况下,您的表达式将如下所示:

var xpath = '//*[translate(name(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz") = "filter"]';

有一些更好的XPath 2.0方法,如matches和类似的方法,但目前没有浏览器支持它:

http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28XML%29#Query_technologies

这是翻译方法的小提琴:

http://jsfiddle.net/Lqw6n7ve/3/

最新更新