如何使用FasterXML反序列化带有注释的XML

我有以下XML模式:

<课程学期=“1”>
<课程代码=“A231”学分=“3”>中级A&lt/课程>
<课程代码=“A105”学分=“2”>A&lt/课程>
<课程代码=“B358”学分=“4”>高级B&lt/课程>
&lt/课程>

我需要将其转换为POJO,如下所示:

公共课程表
{
公共学期;
公共课程[]课程;
}
公共课
{
公共字符串代码;
公共积分;
公共字符串名称;
}

这里有两件重要的事情需要注意:

  1. 课程对象未包装在标记中
  2. 有些属性是属性

我需要如何注释我的对象以获得FasterXML来反序列化此xml

您必须将jackson dataformat xml依赖项添加到项目中:

<依赖性>
<groupId>com.fasterxml.jackson.dataformat&lt/groupId>
<artifactId>jackson数据格式xml&lt/artifactId>
<版本>2.3.3&lt/版本>
&lt/依赖性>

之后,您可以通过以下方式使用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,课程=[

]

发表评论