我有以下代码:
// 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);
这就是结果......
类 net.sf.saxon.tinytree.TinyElementImpl 类 java.util.ArrayList 错误的 错误的
只是为了澄清,如果我这样做:
org.w3c.dom.Node node = (org.w3c.dom.Node)evaluate;
或者
org.w3c.dom.NodeList node = (org.w3c.dom.NodeList)evaluate2;
我得到一个ClassCastException
怎么可能?根据 Suns Java 1.5 API NODE 和 NODESET 应该分别映射到org.w3c.dom.Node
和org.w3c.dom.NodeList
只是为了澄清2是的,我知道 Node 是一个 iterface,getClass() 返回一个具体的类。