gpt4 book ai didi

java - 使用 Jackson/FasterXML 读取 XML 时如何忽略某些元素?

转载 作者:行者123 更新时间:2023-11-30 10:00:15 25 4
gpt4 key购买 nike

我想跳过除 first_name 、node100 及其子节点之外的所有节点。我有这个 XML(实际上我有很多员工,每个员工标签都有很多节点):

 <employees>
<employee>
<first_name>John</first_name>
<last_name>Doe</last_name>
<age>26</age>
</employee>
<employee>
<first_name>Peter</first_name>
<last_name>Parker</last_name>
<age>30</age>
</employee>
</employees>

我能够使用 Jackson FasterXML 阅读。我已经创建了 2 个 POJOS 来映射上面的 XML 结构

  @JacksonXmlRootElement(localName = "employees") public final class Employees {
@JacksonXmlElementWrapper(localName = "employee", useWrapping = false)
private Employee[] employee;
//ommiteed getter and setters

public final class Employee {
@JacksonXmlProperty(localName = "id", isAttribute = true)
private String id;
@JacksonXmlProperty(localName = "first_name")
private String firstName;
@JacksonXmlProperty(localName = "last_name")
private String lastName;
@JacksonXmlProperty(localName = "age")
private int age;

现在在生产中,xml 在节点内有 1000 个节点

<employee>
<first_name>John</first_name>
<last_name>Doe</last_name>
<age>26</age>
<node1> </node1>
<node2> </node2>

..

<node100>
<values>
<value> val1 </value>
<value> val1 </value>
<value> val1 </value>
<value> val1 </value>
</node100>

</employee>


<node100> is also inside 4-5 nodes (which i have not shown above).

所以我的问题是我怎样才能读取 first_name 、 last_name 和 tag 。我的 POJO 类的结构应该是什么?

将XML转换为POJO的代码

System.out.println( " hello");
ObjectMapper objectMapper = new XmlMapper();
// Reads from XML and converts to POJO
Employees employees = objectMapper.readValue(
StringUtils.toEncodedString(Files.readAllBytes(Paths.get("C:\\Users\\91895\\Downloads\\File\\XmlFile.xml")), StandardCharsets.UTF_8),
Employees.class);
System.out.println(employees);

最佳答案

在您的类中定义要从 XML 中读取的元素。要忽略其他元素,请相应地配置 ObjectMapper:

objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

关于java - 使用 Jackson/FasterXML 读取 XML 时如何忽略某些元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58154433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com