consigo la siguiente excepción al intentar acceder a todos los nodos de un documento XML analizado en dom4j:Usando XPath en DOM4J
Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenException
at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)
at org.dom4j.tree.AbstractNode.selectNodes(AbstractNode.java:164)
at xmlparser.LevelsExtractor.findI(LevelsExtractor.java:73)
at xmlparser.Main.main(Main.java:33)
sé que los trabajos de análisis, porque puedo tener la impresión analizador a cabo el xml documentar o guardarlo en un archivo. Aquí está el código que estoy usando.
Para analizar el documento:
public class Parser {
public Document parseWithSAX(File aFile) throws DocumentException {
SAXReader xmlReader = new SAXReader();
Document doc = xmlReader.read(aFile);
return doc;
}
para tratar de conseguir un nodo He probado las siguientes líneas, todos los cuales producen el mismo error:
List list = doc.selectNodes("");
QName qn = new QName("////Token/text()='Introduction'");
Element el = doc.selectSingleNode("////Token/text()='Introduction'");
Node node = doc.selectSingleNode("/DOCUMENT/PAGE/TEXT/TOKEN/text()= 'Introduction'");
Esto imprimirá el xml doc que supongo significa que doc (que es el documento xml analizado) contiene lo que debería.
System.out.println(doc.asXML());
Realmente aprecio su ayuda!
Pensé que la distribución incluía también la lib jaxen, pero incluí el jar ahora solo para ver, y eliminó el mensaje de error. Desafortunadamente, me dio uno nuevo. Entonces ahora se queja en el corchete final de un bloque de código usando el documento analizado que "llegó al final del archivo mientras se analizaba". Ahora esto ocurre incluso en el código que atraviesa el árbol a través de iteradores (que funcionó antes). Creo que esto significa que el nuevo jar de jaxon está jugando con el análisis sintáctico, pero aún puedo analizar y luego imprimir el archivo de nuevo, por lo que no parece ser el caso. –
NoClassDefFoundException solo puede significar que no tiene la clase necesaria en su ruta de clases o que hay una versión incorrecta de eso. Verifica tu ruta de clase una vez más. Quite los frascos innecesarios y agregue solo los que se usan. –
el único jar que tenía originalmente era el dom4j-1.6.1.jar, que me dio el error de definición de clase. Agregué el jaxen-1.1.1.jar que eliminó el error de definición de clase y me dio el "fin de archivo alcanzado al analizar el error". Gracias por su ayuda y respuesta rápida Superfilin. –