Jaxb 使用XmlElementWrapper时编组集合
我的类上有一个集合,它使用@XmlElementWrapper将集合包装在一个额外的元素中 所以,我的班级看起来是这样的:Jaxb 使用XmlElementWrapper时编组集合,jaxb,moxy,Jaxb,Moxy,我的类上有一个集合,它使用@XmlElementWrapper将集合包装在一个额外的元素中 所以,我的班级看起来是这样的: class A { @XmlElement(name = "bee") @XmlElementWrapper public List<B> bees; } 我不想在那里有多余的“蜜蜂”钥匙 在进行编组时,是否可能让MOXy忽略XmlElement部分?因为我仍然需要名字是“蜜蜂”而不是“蜜蜂”,我不想两者兼而有之 我正在使用MOXy 2.4.1和j
class A {
@XmlElement(name = "bee")
@XmlElementWrapper
public List<B> bees;
}
我不想在那里有多余的“蜜蜂”钥匙
在进行编组时,是否可能让MOXy忽略XmlElement部分?因为我仍然需要名字是“蜜蜂”而不是“蜜蜂”,我不想两者兼而有之
我正在使用MOXy 2.4.1和javax.persistence 2.0.0。注意:我是专家组的负责人和成员 oxm.xml 您可以使用MOXy的外部映射文档为JSON绑定提供备用映射(请参阅:)
演示
在下面的演示代码中,我们将创建JAXBContext
的两个实例。第一个是仅基于我们将用于XML的JAXB注释构建。第二个基于JAXB注释构建,并使用MOXy的外部映射文件覆盖A
类上bees
属性的映射
用于UM14002508的包;
导入java.util.*;
导入javax.xml.bind.*;
导入org.eclipse.persistence.jaxb.JAXBContextProperties;
公开课演示{
公共静态void main(字符串[]args)引发异常{
List=new ArrayList();
添加(新的B());
添加(新的B());
A=新的A();
a、 蜜蜂=蜜蜂;
jaxbcontextjc1=JAXBContext.newInstance(A.class);
Marshaller marshaller1=jc1.createMarshaller();
setProperty(Marshaller.JAXB_格式化的_输出,true);
元帅1.元帅(a,系统输出);
映射属性=新的HashMap(3);
put(JAXBContextProperties.OXM_元数据_源,“forum14002508/OXM.xml”);
put(JAXBContextProperties.MEDIA_类型,“application/json”);
put(JAXBContextProperties.JSON_INCLUDE_ROOT,false);
JAXBContext jc2=JAXBContext.newInstance(新类[]{A.Class},属性);
Marshaller marshaller2=jc2.createMarshaller();
setProperty(Marshaller.JAXB_格式化的_输出,true);
元帅2.元帅(a,系统输出);
}
}
输出
下面是运行与您的用例匹配的演示代码的输出
<a>
<bees>
<bee/>
<bee/>
</bees>
</a>
{
"bees" : [ {
}, {
} ]
}
{
"bees": {
"bee": [
....
]
}
}
<a>
<bees>
<bee/>
<bee/>
</bees>
</a>
{
"bees" : [ {
}, {
} ]
}