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

标签 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</name>
    <age>30</age>
  </person>
</persons>

我正在使用的代码:

final DefaultNamespaceContext nsContext = new DefaultNamespaceContext();
final XMLDog dog = new XMLDog(nsContext);

final Expression expression = dog.addXPath("/persons/person/name");
final XPathResults result = dog.sniff(new InputSource("/mnt/data-disk/persons.xml"));

final List<NodeItem> list = (List<NodeItem>)result.getResult(expression);
list.forEach(item -> System.out.println("Path: " + item.location + ", value: " + item.value));

这就是我得到的:

Path: /persons[1]/person[1]/name[1], value: null
Path: /persons[1]/person[2]/name[1], value: null

我需要帮助来弄清楚为什么我得到 null 值。

在我的项目中,我需要确切的路径和值。 还有其他方法可以实现这一目标吗?

最佳答案

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

关于java - 如何从xml文件中获取值和路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54370945/

相关文章:

Java 替换文本文件中的行

java - Dockerize Java Cucumber

java - SQLJ IN 语句支持

java - Selenium IDE-自动将html转换为junit

java - 由于 Solr 依赖性,Spring Actuator 状态下降

java - 如何使用java/python从xml结构中获取匹配xpath的DOM结构

xml - SOAP RPC/编码转换为 RPC/文字

javascript - XHR 纯 XML 响应类型

java - Spring Boot OAuth 资源服务器代理配置

java - Spring Boot 找不到 IntelliJ