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

时间:2014-11-21 15:13:28

标签: javascript 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;

1 个答案:

答案 0 :(得分:1)

一种选择是使用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/