Ich habe den folgenden Code:Saxon XPath API gibt TinyElementImpl statt 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);
und das ist das Ergebnis ...
class net.sf.saxon.tinytree.TinyElementImpl class java.util.ArrayList false false
Nur zu klären wenn ich dies tun:
org.w3c.dom.Node node = (org.w3c.dom.Node)evaluate;
oder
org.w3c.dom.NodeList node = (org.w3c.dom.NodeList)evaluate2;
ich ein ClassCastException
Wie kann das sein? nach Suns Java 1.5 API NODE und nodeset zu org.w3c.dom.Node
und org.w3c.dom.NodeList
bzw.
Gerade clarify2 ja ich weiß Knoten ist ein iterface, dass getClass() gibt eine konkrete Klasse abbilden sollte.
Macht Sinn .... Wenn Sie W3C DOM einstecken, bekommen Sie W3C DOM raus. Andernfalls erhalten Sie proprietäres DOM heraus. – skaffman
Willkommen bei Java XML. – Esko