2012-02-08 10 views
1

Play Frameworkは、XMLドキュメントを処理するための優れたXPathオブジェクトを提供します。たとえば、あなたがPlay Framework:play.libs.XPathの大文字と小文字を区別しない一致

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

を使用することができ、XML文書からfoobarノードを選択すると、しかし、これは(予想通り)大文字と小文字を区別しているので、あなたは、名前の要素を持っていたXMLドキュメントで同じクエリを実行した場合fooBarの場合、ノードは見つかりません。私は、「大文字と小文字を区別しない」検索は、ノード名に下ケースを作ることによって達成できることを見出し、私のGoogle検索で

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

は私がプレイFrameworkのXPath libで動作するように適用するか、誰を知っています?

答えて

1

Playが特にサポートしているものはわかりませんが、カップルオプションがあります。まず、プレイは、XPath 2.0をサポートしていれば、その後、lower-caseを使用します。

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

lower-caseがサポートされていない場合、それを模倣するためにXPath 1.0のtranslate機能を使用します。

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

はありがとうございました。この問題を再訪した後、私はこれが完全に正しい答えであることを認識し、それを受け入れるのにとても時間がかかることをお詫びします。また、少しの相対情報を追加するだけで、XPath 2.0はPlay Frameworkでサポートされています。 –

関連する問題