Java 如何从xml文件中获取值和路径?

Java 如何从xml文件中获取值和路径?,java,xml,spring-boot,xpath,xmldog,Java,Xml,Spring Boot,Xpath,Xmldog,我使用XMLDog从xml文件中读取值。问题是我总是得到空值 这是xml文件: <?xml version="1.0" encoding="UTF-8"?> <persons> <person> <name>John Doe</name> <age>30</age> </person> <person> <name>Jane Doe</

我使用XMLDog从xml文件中读取值。问题是我总是得到空值

这是xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
  <person>
    <name>John Doe</name>
    <age>30</age>
  </person>
  <person>
    <name>Jane Doe</name>
    <age>30</age>
  </person>
</persons>
我需要帮助找出为什么我得到值
null

在我的项目中,我需要确切的路径和值。
是否有其他方法实现此目的?

来自文档:

DOM结果

默认情况下,XMLDog不会为结果构造dom节点。你可以 按如下方式配置DOM结果:

导入包jlibs.xml.sax.dog.sniff.Event;
Event=dog.createEvent();
结果=新的XPathResults(事件);
event.setListener(结果);
setXMLBuilder(新的DOMBuilder());
sniff(事件,新输入源(“note.xml”);
List items=(List)results.getResult(xpath1)

是否有可能在未创建DOM的情况下尝试在DOM上循环?

缺少XPath:
/text()
。 我已将其更改为:
/persons/person/name/text()
。 现在输出正常:

Path: /persons[1]/person[1]/name[1]/text()[1], value: John Doe
Path: /persons[1]/person[2]/name[1]/text()[1], value: Jane Doe

奇怪的是它有个名字[1]。我想知道是否有其他方法可以指定不包含项目/匹配项列表的名称?如果将其设为/persons/person/@name,会发生什么情况?如果xPath为
/persons/person/@name
,则结果列表为空,值仍然为
null
Path: /persons[1]/person[1]/name[1], value: null
Path: /persons[1]/person[2]/name[1], value: null
import package jlibs.xml.sax.dog.sniff.Event;

Event event = dog.createEvent();
results = new XPathResults(event);
event.setListener(results);
event.setXMLBuilder(new DOMBuilder());
dog.sniff(event, new InputSource("note.xml"));

List<NodeItem> items = (List<NodeItem>)results.getResult(xpath1)
Path: /persons[1]/person[1]/name[1]/text()[1], value: John Doe
Path: /persons[1]/person[2]/name[1]/text()[1], value: Jane Doe