有沒有方法可以確定XPath評估的返回類型是什麼?我希望XPath儘可能一致地匹配。它應該匹配一個節點列表,如果不能,節點,如果不能,一個值。有沒有簡單的方法來在Java中實現這一點?Java XPath評估返回類型
4
A
回答
2
JAXP XPath API的設計有很多困難,這就是其中之一。考慮使用Saxon作爲XPath處理器,它將(a)使您能夠使用XPath 2.0,並且(b)爲您提供更豐富的s9api API的好處。 [無恥插頭]
1
您應該知道評估的返回類型,因爲您已將其提供給evaluate
。例如:
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile("/expression");
NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
如果你正在處理,你沒有執行自己的評估結果(即你剛剛被交給一些Object
),然後再打到正常instanceof
檢查。
1
不能使用標準的JAXP實現,但可以使用Jaxen。它有一個selectNodes()
函數,它返回一個List
對象。該列表將包含Attribute
,Content
或文本(也許還有其他我還沒有遇到)。您需要將它傳遞給一個JDom文檔。
org.jdom.Document doc = builder.build(file);
org.jdom.xpath.XPath xp = XPath.newInstance("expression here");
List nodes = xpath.selectNodes(document);
for (Object node : nodes) {
if (node instanceof Attribute) {
value = ((Attribute) node).getValue();
} else if (node instanceof Content) {
value = ((Content) node).getValue();
} else if (node instanceof Text) {
value = (Text) node.getText();
}
}
相關問題
- 1. 的XPath評估()沒有返回任何
- 2. XPath評估失敗
- 3. xpath評估問題
- 4. casperjs:評估document.querySelector返回null
- 5. JEXL評估返回int
- 6. VBA - 評估返回值#VALUE
- 7. Java返回類型
- 8. xerces-c 3.1 XPath評估
- 9. XPath評估如何實施?
- 10. XPATH評估VS創建XPathNodeIterator
- 11. 如何選擇xpath返回類型?
- 12. 評估的Java
- 13. 評估在Java
- 14. 評估迴歸
- 15. 模型OCL評估與對象評估
- 16. Java - 返回類型的通用類型
- 17. JavaScript評估如何返回對象?
- 18. Javascript:評估並返回內嵌文本
- 19. Apigee RouteRule正確評估但返回503
- 20. Func在評估時返回false
- 21. 評估賦值語句的返回值
- 22. 評估上.SDcols函數,返回data.table
- 23. casperjs評估函數返回無效值
- 24. AngularJS - 評估指令的返回值
- 25. Java繼承返回類型
- 26. 返回類型Java和C#
- 27. Java返回類型通用
- 28. java covariant返回類型
- 29. 一般返回類型 - Java
- 30. Java動態返回類型?
我希望找到一種方法來調用它,而不知道返回類型,並獲得最廣泛的。 – Arash