jaxb unmarshal xml元素到一些字段的对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jaxb unmarshal xml元素到一些字段的对象相关的知识,希望对你有一定的参考价值。

我有一些课程:

class Location  {   

    private Long id;   

    private String roomTitle;  

    protected Specialization specialization;
}

public class Specialization  {

    private Long id;

    private boolean archived;

    private String title;
}

和xml:

<location id="10"> 
  <roomTitle>string</roomTitle>
  <specializationId>10</specializationId>
</location>

我可以将specializationId解组到Location.specialization.id吗?

答案

我不知道jaxb,但SimpleXml可以做到。

首先,我们需要添加一些注释:

public class Location  {
    private Long id;
    private String roomTitle;
    @XmlName("specializationId")
    protected Specialization specialization;
}

public class Specialization  {
    @XmlTextNode
    private Long id;
    private Boolean archived;
    private String title;
}

请注意,archived现在是一个布尔类。常规布尔值不能为null。接下来,我们将xml序列化为Location类。

final SimpleXml simple = new SimpleXml();
final Location l = simple.fromXml(xml, Location.class);

然后我们可以打印该值

System.out.println(l.specialization.id);

这将打印

10

SimpleXml位于maven中心

<dependency>
    <groupId>com.github.codemonstur</groupId>
    <artifactId>simplexml</artifactId>
    <version>1.5.4</version>
</dependency>

以上是关于jaxb unmarshal xml元素到一些字段的对象的主要内容,如果未能解决你的问题,请参考以下文章

Jaxb UnMarshal 错误:意外元素(uri:“”,本地:“processedSalesOrderTypeList”)。预期的元素是

使用 JAXB 和 Unmarshal 过早结束文件。响应中的 xml 对我来说似乎有效

通过JAXB完成Java对象与XML之间的转换

JAXB Unmarshal 创建一个空对象

Unmarshal NullPointerException(带有 JAXB 参考实现)

将Java从1.8.0_45更新为1.8.0_131后,JAXB unmarshal字段为空