je reçois l'exception suivante lorsque vous essayez d'accéder à tous les nœuds d'un document XML analysé sur dom4j:Utilisation de XPath dans 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)
Je sais que les travaux d'analyse, parce que je peux avoir l'impression de l'analyseur le xml document ou enregistrez-le dans un fichier. Voici le code que j'utilise.
Pour analyser le document:
public class Parser {
public Document parseWithSAX(File aFile) throws DocumentException {
SAXReader xmlReader = new SAXReader();
Document doc = xmlReader.read(aFile);
return doc;
}
Pour essayer d'obtenir un nœud que j'ai essayé que les lignes, toutes suivantes produisent la même erreur:
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'");
Cela affichera la xml doc que je suppose signifie que doc (qui est le doc xml analysé) contient ce qu'il devrait.
System.out.println(doc.asXML());
J'apprécie vraiment votre aide!
Je pensais que la distribution incluait également la bibliothèque jaxen, mais j'ai inclus le fichier maintenant juste pour le voir, et il a supprimé le message d'erreur. Malheureusement, il m'a donné un nouveau. Alors maintenant, il se plaint à la fin d'un bloc de code en utilisant le document analysé que "il a atteint la fin du fichier lors de l'analyse." Maintenant cela se produit même sur du code qui a traversé l'arbre à travers des itérateurs (qui fonctionnaient auparavant). Je pense que cela signifie que le nouveau jaxon jar joue avec l'analyse, mais je peux toujours analyser et ensuite imprimer le fichier à nouveau, ce qui ne semble pas être le cas. –
NoClassDefFoundException ne peut que signifier que vous n'avez pas la classe nécessaire sur votre chemin de classe ou qu'il existe une mauvaise version de celui-ci. Vérifiez à nouveau le chemin de votre classe. Enlevez les pots inutiles et ajoutez seulement ceux qui sont utilisés. –
les seuls jars que j'avais à l'origine était le dom4j-1.6.1.jar, ce qui m'a donné l'erreur de classe def. J'ai ajouté le jaxen-1.1.1.jar qui s'est débarrassé de l'erreur de classe def et m'a donné la "fin de fichier atteinte lors de l'erreur d'analyse." Merci pour votre aide et réponse rapide Superfilin. –