Play Framework:play.libs.XPath中不区分大小写的匹配

时间:2012-02-08 17:21:15

标签: xpath playframework case-insensitive

Play Framework为处理XML文档提供了一个很棒的XPath对象。例如,要从xml文档中选择foobar个节点,您可以使用

List<Node> nodes = XPath.selectNodes(".//foobar", xmlDocument);

但是,这是区分大小写的(如预期的那样),因此如果您要在具有名为fooBar的元素的xml文档上运行相同的查询,则不会找到任何节点。

通过我的谷歌搜索,我发现通过使节点名称小写可以实现“不区分大小写”搜索:

.//[lower-case(@foobar)]

有谁知道如何应用它来使用Play Framework的XPath lib

1 个答案:

答案 0 :(得分:1)

我不知道Play特别支持什么,但你有几个选择。首先,如果Play支持XPath 2.0,则使用lower-case

//*[lower-case(local-name())='foo']

如果不支持lower-case,请使用XPath 1.0 translate函数模仿它:

//*[translate(local-name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
                            'abcdefghijklmnopqrstuvwxyz')='foo']