java - 在 Dom4j 中使用 Xpath

标签 java xml dom4j

尝试访问 dom4j 上已解析 xml 文档的任何节点时出现以下异常:

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)

我知道解析是有效的,因为我可以让解析器打印出 xml 文档或将其保存到文件中。这是我正在使用的代码。

解析文档:

 public class Parser {

 public Document parseWithSAX(File aFile) throws DocumentException {
    SAXReader xmlReader = new SAXReader();
    Document doc = xmlReader.read(aFile);
    return doc;
  }

为了尝试获取节点,我尝试了以下几行,所有这些都会产生相同的错误:

      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'");

这将打印出 xml 文档,我认为这意味着文档(即解析的 xml 文档)包含它应该包含的内容。

      System.out.println(doc.asXML());

非常感谢您的帮助!

最佳答案

如果您使用的是 mvn2,则以下内容适用于 dom4j 1.6.1:

<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.1</version>
</dependency>

话虽如此,我希望他们修复他们的 pom 并为大家省去这个麻烦。

关于java - 在 Dom4j 中使用 Xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1669625/

相关文章:

html - SVG Logo 太小

xml - 在Groovy中按名称访问xml的子节点,同时迭代访问父节点

java - 使用 dom4j 用 XML 内容填充 ArrayList<ArrayList<String>>

java - 使用dom4j创建xml文档时如何正确处理空值

java - JSF 支持 bean 结构(最佳实践)

Java 生成文件错误

c# - 在现有 XML 中插入新的子节点

xml - 与在 Dom4J 中使用 DOM 相比,XPath 的效率如何?

Java TCP 客户端-服务器连接 : always open to listen from server

java - 安卓房间: error: setValue(T) has protected access in LiveData