忽略数组元素的父标记xml标记JAXBContext

问题描述

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

对象包含数组,每个元素均以标签开头。

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
         
    }
    ...
  ]
}

解决方法

您在电影列表上缺少一些注释,首先将列表“包装”:在“元素”序列上包含一个包含“电影”元素,并且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;
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...