【问题标题】:ignore parent tag of array elements xml tag JAXBContext忽略数组元素的父标签 xml 标签 JAXBContext
【发布时间】:2020-11-30 22:32:30
【问题描述】:

我想使用 JAXBContext 解组复杂对象。

对象包含数组,每个元素都以tag开头。

xml文件是这样的:

<root>
  <name>any name</name>
  ..
  <movies>
    <element>
        <id>123</id>
        <name>transformers</name>
    </element>
    <element>
        <id>567</id>
        <name>joker</name>
    </element>
    ...
  </movies>
</root>

我的pojo是:

@XmlRootElement(name="root")
public class Personalization {
 private String name;
 ..
 private Movie[] movies;
}

public class Movie{
 private String id;
 private String name;
}

当我尝试进行映射时,电影数组包含 null。 当我删除它工作的标签。 我必须保持 xml 原样,因为它需要采用这种格式。 如何忽略每个电影元素中的标签?

注意:我无法创建 Element 类并在那里嵌入电影属性,因为我需要将相同的 pojo 映射到下面的 json 格式文件:

{
  "name":any name,
  ..
  'movies": [
        {
        "id": 123,
        "name:"transformers
        },
        {
        "id":567,
        "name":joker
         
    }
    ...
  ]
}

【问题讨论】:

    标签: java xml xml-parsing


    【解决方案1】:

    您在电影列表上缺少一些注释,首先您的列表是“包装的”:您在“元素”序列上有一个包含“电影”元素,并且 jaxb 必须知道每个列表元素都被命名“元素”,所以它看起来像:

    @XmlRootElement(name="root")
    public class Personalization {
     private String name;
     ..
     @XmlElementWrapper(name="movies")
     @XmlElement(name ="element")
     private Movie[] movies;
    }
    
    public class Movie{
     private String id;
     private String name;
    }
    

    【讨论】:

    • 我在 getter 上设置了注释,它起作用了!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多