有没有办法在执行 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/