Jaxb @仅属性集合上的XmlElement元素不';t打印xsi:nil

Jaxb @仅属性集合上的XmlElement元素不';t打印xsi:nil,jaxb,jaxb2,xml-nil,Jaxb,Jaxb2,Xml Nil,我有一个非常奇怪的情况 公共类子类{ @XmlAttribute 公共字符串名称; } @XmlRootElement 公共类父类{ 公共静态void main(最终字符串[]args)引发异常{ 最终父项=新父项(); parent.children=new ArrayList(); 对于(int i=0;i

我有一个非常奇怪的情况

公共类子类{
@XmlAttribute
公共字符串名称;
}
@XmlRootElement
公共类父类{
公共静态void main(最终字符串[]args)引发异常{
最终父项=新父项();
parent.children=new ArrayList();
对于(int i=0;i<3;i++){
最终子项=新子项();
child.name=Integer.toString(i);
parent.children.add(child);
}
final JAXBContext context=JAXBContext.newInstance(Parent.class);
final Marshaller=context.createMarshaller();
setProperty(marshaller.JAXB_格式的_输出,Boolean.TRUE);
marshaller.marshall(父级,系统输出);
}
@xmlement(name=“child”,nillable=true)
公开儿童名单;
}


问题1:为什么在那些
子项上没有
xsi:nil
属性?

xsi:nil
将只为cle胶片中
null
的项目编写。在您的示例中,
列表中的所有项都是
子项的实例

家长

如果您更新父类
中的代码,将null添加到子类
列表

publicstaticvoidmain(最终字符串[]args)引发异常{
最终父项=新父项();
parent.children=new ArrayList();
对于(int i=0;i<3;i++){
最终子项=新子项();
child.name=Integer.toString(i);
parent.children.add(child);
}
//更新-将空条目添加到列表中
parent.children.add(空);
final JAXBContext context=JAXBContext.newInstance(Parent.class);
final Marshaller=context.createMarshaller();
setProperty(marshaller.JAXB_格式的_输出,Boolean.TRUE);
marshaller.marshall(父级,系统输出);
}
输出

null
条目对应的
子元素将包含
xsi:nil
属性


xsi:nil
将仅为cle胶片中
null
的项目编写。在您的示例中,
列表中的所有项都是
子项的实例

家长

如果您更新父类
中的代码,将null添加到子类
列表

publicstaticvoidmain(最终字符串[]args)引发异常{
最终父项=新父项();
parent.children=new ArrayList();
对于(int i=0;i<3;i++){
最终子项=新子项();
child.name=Integer.toString(i);
parent.children.add(child);
}
//更新-将空条目添加到列表中
parent.children.add(空);
final JAXBContext context=JAXBContext.newInstance(Parent.class);
final Marshaller=context.createMarshaller();
setProperty(marshaller.JAXB_格式的_输出,Boolean.TRUE);
marshaller.marshall(父级,系统输出);
}
输出

null
条目对应的
子元素将包含
xsi:nil
属性