2012-02-08 71 views
1

Play Framework爲處理XML文檔提供了一個很棒的XPath對象。例如,從XML文檔中選擇foobar節點上,您可以使用Play Framework:在play.libs.XPath中區分大小寫的匹配

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

然而,這是區分大小寫(如預期),所以如果你要運行上有元素命名的XML文檔相同的查詢而不是,然後找不到節點。

通過我的谷歌搜索我發現,「不區分大小寫」搜索可以通過將節點名小寫來實現:

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

有誰知道我是如何將適用與播放框架的XPath lib工作?

回答

1

我不知道什麼玩,具體來說,支持,但你有幾個選項。首先,如果播放支持XPath 2.0,然後用lower-case

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

如果不支持lower-case,然後使用XPath 1.0 translate功能模仿它:

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

太謝謝你了。在重新審視這個問題後,我意識到這是完全正確的答案,我很抱歉花了這麼長的時間來接受它。只是添加一些相關信息,Play Framework支持XPath 2.0。 – 2012-04-15 10:10:12