我有以下XML模式:
<;课程学期=“1”>;
<;课程代码=“A231”学分=“3”>;中级A</课程>;
<;课程代码=“A105”学分=“2”>;A</课程>;
<;课程代码=“B358”学分=“4”>;高级B</课程>;
</课程>;
我需要将其转换为POJO,如下所示:
公共课程表
{
公共学期;
公共课程[]课程;
}
公共课
{
公共字符串代码;
公共积分;
公共字符串名称;
}
这里有两件重要的事情需要注意:
- 课程对象未包装在标记中
- 有些属性是属性
我需要如何注释我的对象以获得FasterXML来反序列化此xml
您必须将jackson dataformat xml依赖项添加到项目中:
<;依赖性>;
<;groupId>;com.fasterxml.jackson.dataformat</groupId>;
<;artifactId>;jackson数据格式xml</artifactId>;
<;版本>;2.3.3</版本>;
</依赖性>;
之后,您可以通过以下方式使用XML注释:
@JacksonXmlRootElement(localName=“Courses”)
课程表{
@JacksonXmlProperty(isAttribute=true)
私人学期;
@JacksonXmlProperty(localName=“课程”)
私人课程[]课程;
//接球手、二传手、投球手等
}
班级课程{
@JacksonXmlProperty(isAttribute=true)
私有字符串码;
@JacksonXmlProperty(isAttribute=true)
私人积分;
@JacksonXmlText(值=真)
私有字符串名称;
//接球手、二传手、投球手等
}
现在,您必须使用XmlMapper而不是ObjectMapper:
JacksonXmlModule模块=新的JacksonXmlModule();
module.setDefaultUseWrapper(false);
XmlMapper XmlMapper=新的XmlMapper(模块);
System.out.println(xmlMapper.readValue(xml,Schedule.class));
上面的脚本打印:
课程表[学期=1,课程=[
,
,
]