2013-03-06 20 views
0

我想構建一個xpath查詢,以便xpathexpression .evaulate返回一個以任意字符串爲前綴的值列表。前綴xpathexpression節點列表的每個成員

使用單一結果實現此目的是一個簡單的concat('PREFIX:',/returns/one/node),雖然有效的xpath查詢/returns/many/nodes/concat('PREFIX:',text())未被xpathexpression .evaulate接受。

這裏是我的函數調用:

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

這是錯誤我收到:

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

有誰知道一個評估友好的替代嗎?

預先感謝您

回答

1

這是因爲您的「有效的xpath查詢」無效。 concat()是一個接受參數的函數,這就是爲什麼你的第一個xpath:被正確使用,並且工作正常。

當你把它放在xpath的末尾就像你在這裏做的那樣:/returns/many/nodes/concat('PREFIX:',text())它試圖找到一個叫做「concat」的節點類型,它不存在,因此也就是你收到的錯誤。

expr.evaluate()會評估你的concat('PREFIX:',/returns/one/node)作爲參數,但它期待節點列表的返回類型,concat()返回一個字符串類型,也不工作,讓你有一對夫婦選擇:

你必須將/returns/many/nodes的xpath設置爲evaluate(),然後在用XPath結果填充時將其索引設置爲「PREFIX:」。

或者

您可以評估concat('PREFIX:',/returns/one/node) XPath和改變預期的類型爲字符串,但你有一個很長的字符串處理。

相關問題