我正在使用 Jackson api 来解析 xml 对象。
<BESAPI xsi:noNamespaceSchemaLocation="BESAPI.xsd">
<Employee Resource="https://abc:52311/api/employee/100"/>
<Employee Resource="https://abc:52311/api/employee/200"/>
<Employee Resource="https://abc:52311/api/employee/300"/>
<Employee Resource="https://abc:52311/api/employee/400"/>
</BESAPI>
这是xml记录的结构。我想获取所有资源的字符串列表。我如何使用 Jackson api 来实现它?
最佳答案
首先,您需要编写一些 Java 类来对 XML 内容进行建模。
类(class)获得 @JacksonXml...
注释告诉 Jackson XML 和 Java 之间的映射。
当 Java 名称与 XML 名称不同时,这些注释尤其重要。
一个类用于代表 <BESAPI>
根元素:
@JacksonXmlRootElement(localName = "BESAPI")
public class BESAPI {
@JacksonXmlProperty(isAttribute = true, localName = "noNamespaceSchemaLocation", namespace = XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI)
private String noNamespaceSchemaLocation;
@JacksonXmlProperty(isAttribute = false, localName = "Employee")
@JacksonXmlElementWrapper(useWrapping = false)
private List<Employee> employees;
// public getters and setters (omitted here for brevity)
}
和另一个代表 <Employee>
的类元素
public class Employee {
@JacksonXmlProperty(isAttribute=true, localName="Resource")
private String resource;
// public getters and setters (omitted here for brevity)
}
然后你可以使用 Jackson 的 XmlMapper
用于读取 XML 内容。
XmlMapper xmlMapper = new XmlMapper();
File file = new File("example.xml");
BESAPI besApi = xmlMapper.readValue(file, BESAPI.class);
for (Employee employee : besApi.getEmployees()) {
System.out.println(employee.getResource());
}
关于java - 如何使用 Jackson API 解析 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50579733/