【发布时间】:2020-01-28 22:53:36
【问题描述】:
我想跳过除 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);
【问题讨论】:
-
我怎样才能读取 first_name 、 last_name 和 tag - 你通过 tag 发送的内容是什么?
-
标签是指节点。
-
如果您还想阅读 node 元素,这意味着您想阅读所有内容。但是你的话just read意味着你想跳过一些元素。你到底想读什么,跳过什么?
-
是的,你是对的。我没有正确地提出问题。我想跳过除 first_name 、node100 及其子节点以外的所有节点。那么如何创建我的 POJO 类?
标签: java xml jackson jackson-dataformat-xml