0

xpathexpression .evaulate が任意の文字列で始まる値のリストを返す ような xpath クエリを作成したいと思います。

単一の結果でこれを達成するのは簡単concat('PREFIX:',/returns/one/node)ですが、有効な xpath クエリはxpathexpression/returns/many/nodes/concat('PREFIX:',text()) .evaulateによって受け入れられません。

これが私の関数呼び出しです:

NodeList resultNodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); String collectionIDs[] = new String[resultNodes.getLength()];

これは私が受け取るエラーです:

javax.xml.transform.TransformerException: Unknown nodetype: concat

評価しやすい代替案を知っている人はいますか?

前もって感謝します

4

1 に答える 1

1

これは、「有効なxpathクエリ」が無効であるためです。concat()はパラメータを受け入れる関数です。そのため、最初のxpath:concat('PREFIX:',/returns/one/node)が正しく使用され、機能します。

ここで行ったようにxpathの最後に配置すると、/returns/many/nodes/concat('PREFIX:',text())存在しない「concat」というノードタイプを見つけようとしているため、エラーが発生します。

expr.evaluate()はパラメータとしてあなたを評価しますconcat('PREFIX:',/returns/one/node)が、ノードリストの戻り型を期待しておりconcat()、文字列型を返すため、どちらも機能しないため、いくつかの選択肢があります。

xpathに/returns/many/nodesを指定し、XPathの結果を入力する前にevaluate()、インデックス0にString[]「PREFIX:」を設定する必要があります。

または

concat('PREFIX:',/returns/one/node)xpathを評価し、予期される型を文字列に変更できますが、処理する長い文字列が1つあります。

于 2013-03-06T18:37:00.937 に答える