Tengo el siguiente código:Saxon XPath API devuelve TinyElementImpl en lugar de 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);
y este es el resultado ...
class net.sf.saxon.tinytree.TinyElementImpl class java.util.ArrayList false false
Solo para aclarar , si hago esto:
org.w3c.dom.Node node = (org.w3c.dom.Node)evaluate;
o
org.w3c.dom.NodeList node = (org.w3c.dom.NodeList)evaluate2;
me siento un ClassCastException
¿Cómo puede ser eso? de acuerdo con Java 1.5 Soles API nodo y nodeset debe asignar a org.w3c.dom.Node
y org.w3c.dom.NodeList
respectivamente
Sólo para clarify2 Sí sé nodo es un iterface, que getClass() devuelve una clase concreta.
Tiene sentido ... si pone W3C DOM, obtiene W3C DOM. De lo contrario, obtienes DOM exclusivo. – skaffman
Bienvenido a Java XML. – Esko