ottengo la seguente eccezione quando si tenta di accedere a tutti i nodi di un documento XML analizzato il dom4j:Uso di XPath in 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)
So che i lavori di analisi, perché posso avere la stampa parser il xml documento o salvarlo su file. Ecco il codice che sto usando.
per analizzare il documento:
public class Parser {
public Document parseWithSAX(File aFile) throws DocumentException {
SAXReader xmlReader = new SAXReader();
Document doc = xmlReader.read(aFile);
return doc;
}
per cercare di ottenere un nodo Ho provato le seguenti linee, i quali producono lo stesso errore:
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'");
Questo stamperà la xml doc che presumo significhi che doc (che è il documento xml analizzato) contenga ciò che dovrebbe.
System.out.println(doc.asXML());
Ho davvero apprezzato il tuo aiuto!
Pensavo che la distribuzione includesse anche la jaxen lib, ma ora ho incluso il jar solo per vedere e ha rimosso il messaggio di errore. Sfortunatamente me ne ha dato uno nuovo. Così ora si lamenta alla parentesi finale di un blocco di codice usando il documento analizzato che "ha raggiunto la fine del file durante l'analisi". Ora ciò si verifica anche sul codice che ha attraversato l'albero tramite iteratori (che funzionavano prima). Penso che questo significhi che il nuovo jaxon jar stia scherzando con l'analisi, ma posso ancora analizzare e quindi stampare nuovamente il file, quindi non sembra essere il caso. –
NoClassDefFoundException può significare solo che non si ha la classe necessaria sul percorso della classe o se esiste una versione errata. Controlla di nuovo il tuo percorso di classe. Rimuovere i barattoli non necessari e aggiungere solo quelli che vengono utilizzati. –
gli unici jar che avevo originariamente era il dom4j-1.6.1.jar, che mi ha dato l'errore di classe def. Ho aggiunto il jaxen-1.1.1.jar che si è sbarazzato dell'errore di classe def e mi ha dato la "fine raggiunta del file durante l'analisi dell'errore". Grazie per il tuo aiuto e la risposta rapida Superfilin. –