标签: xpath-api

Saxon XPath API返回TinyElementImpl而不是org.w3c.dom.Node

我有以下代码:

// xpath evaluates to net.sf.saxon.xpath.XPathEvaluator
XPath xpath = XPathFactory.newInstance().newXPath(); 
XPathExpression expression = xpath.compile("/foo/bar");
Object evaluate = expression.evaluate(someXML, XPathConstants.NODE);
Object evaluate2 = expression.evaluate(someXML, XPathConstants.NODESET);

System.out.println(evaluate!=null?evaluate.getClass():"null");
System.out.println(evaluate2!=null?evaluate2.getClass():"null2");

System.out.println(evaluate instanceof Node);
System.out.println(evaluate2 instanceof NodeList);
Run Code Online (Sandbox Code Playgroud)

这就是结果......

class net.sf.saxon.tinytree.TinyElementImpl
class java.util.ArrayList
false
false

只是为了澄清,如果我这样做:

org.w3c.dom.Node node = (org.w3c.dom.Node)evaluate;
Run Code Online (Sandbox Code Playgroud)

要么

org.w3c.dom.NodeList node = (org.w3c.dom.NodeList)evaluate2;
Run Code Online (Sandbox Code Playgroud)

我得到了 ClassCastException

怎么可能?根据Suns Java 1.5 API NODE和NODESET应分别映射到org.w3c.dom.Nodeorg.w3c.dom.NodeList

只是澄清2是的我知道Node是一个iterface,getClass()返回一个具体的类.

java saxon xpath-api java-api

7
推荐指数
1
解决办法
4903
查看次数

标签 统计

java ×1

java-api ×1

saxon ×1

xpath-api ×1