我有以下代碼:撒克遜的XPath API返回,而不是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);
,這是結果...
class net.sf.saxon.tinytree.TinyElementImpl class java.util.ArrayList false false
只是爲了澄清如果我這樣做:
org.w3c.dom.Node node = (org.w3c.dom.Node)evaluate;
或
org.w3c.dom.NodeList node = (org.w3c.dom.NodeList)evaluate2;
我得到了ClassCastException
怎麼可能?根據太陽的Java 1.5 API節點NODESET應該映射到org.w3c.dom.Node
和org.w3c.dom.NodeList
分別
只是爲了clarify2是的,我知道Node是一個iterface,是的getClass()返回一個具體的類。
有意義....如果你放入W3C DOM,你會得到W3C DOM。否則,你會獲得專有的DOM。 – skaffman 2010-01-02 17:46:10
歡迎使用Java XML。 – Esko 2010-01-02 17:50:25