有没有方法可以确定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