java - 忽略数组元素的父标签 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;
}
当我尝试进行映射时,电影数组包含空值。当我删除它工作的标签。我必须保持 xml 原样,因为它需要采用这种格式。如何忽略每个电影元素中的标签?
注意:我无法创建元素类并在那里嵌入电影属性,因为我需要将相同的 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;
}
推荐阅读
- javascript - 如何根据内部子数组的第一项合并二维数字数组?
- c# - 如何获取给定月份生日表上的用户列表?
- swift - 将 do catch 块放入数组
- ios - Swift 将按钮添加到 UISearchBar / UITableView
- android - 如何在活动中隐藏android片段以使当时只有一个片段处于活动状态?
- matlab - 在 Matlab 中近似 delta 的蒙特卡罗模拟
- scala - spark ml LinearRegression 预测是所有观测值的常数
- solidity - metamask/web3 连接问题
- angular - 如何为 AngularFire 应用程序编写实时数据库规则
- maven - 将 maven 程序集 jar 上传到 nexus 并在 gradle 中使用