Jaxb 排除列表编组中的外部节点<;X>; 公共类组{ //许多其他领域 公众人士名单; } 公共阶层人士{ 公共字符串名称。。。 }
当我marhsal时,我想得到一组Person节点:Jaxb 排除列表编组中的外部节点<;X>; 公共类组{ //许多其他领域 公众人士名单; } 公共阶层人士{ 公共字符串名称。。。 },jaxb,Jaxb,当我marhsal时,我想得到一组Person节点: .. .. 而不是:(将person节点作为子节点的person节点) .. .. 如何实现这一点?更新 如果将persons称为分组元素而不是根元素,则默认情况下实现不会添加一个 分组(无分组元素) UM13305973包; 导入java.util.*; 导入javax.xml.bind.annotation.*; @XmlRootElement 公共课组{ //许多其他领域 @xmlement(name=“person”) pub
..
..
而不是:(将person节点作为子节点的person节点)
..
..
如何实现这一点?更新 如果将
persons
称为分组元素而不是根元素,则默认情况下实现不会添加一个
分组(无分组元素)
UM13305973包;
导入java.util.*;
导入javax.xml.bind.annotation.*;
@XmlRootElement
公共课组{
//许多其他领域
@xmlement(name=“person”)
public List persons=new ArrayList();
}
人
UM13305973包;
公共阶层人士{
公共字符串名称;
}
演示
UM13305973包;
导入javax.xml.bind.*;
公开课演示{
公共静态void main(字符串[]args)引发异常{
JAXBContext jc=JAXBContext.newInstance(Group.class);
组=新组();
Person person1=新的Person();
person1.name=“Jane”;
组。人员。添加(人员1);
Person person2=新的Person();
person2.name=“约翰”;
组。人员。添加(人员2);
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);
编组员。编组(组、系统、输出);
}
}
输出
简
约翰
分组(带分组元素) 您需要添加
@xmlementwrapper
注释以获得分组元素
UM13305973包;
导入java.util.*;
导入javax.xml.bind.annotation.*;
@XmlRootElement
公共课组{
//许多其他领域
@XmlElementWrapper
@xmlement(name=“person”)
public List persons=new ArrayList();
}
输出(带分组元素)
简
约翰
原始答案 您可以执行以下操作:
jaxbcontextjc=JAXBContext.newInstance(Person.class);
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);//格式输出
setProperty(marshaller.JAXB_片段,true);//卸下收割台
for(个人:组。个人){
封送员。封送员(人员、系统、输出);
}
更新
如果将persons
称为分组元素而不是根元素,则默认情况下实现不会添加一个
分组(无分组元素)
UM13305973包;
导入java.util.*;
导入javax.xml.bind.annotation.*;
@XmlRootElement
公共课组{
//许多其他领域
@xmlement(name=“person”)
public List persons=new ArrayList();
}
人
UM13305973包;
公共阶层人士{
公共字符串名称;
}
演示
UM13305973包;
导入javax.xml.bind.*;
公开课演示{
公共静态void main(字符串[]args)引发异常{
JAXBContext jc=JAXBContext.newInstance(Group.class);
组=新组();
Person person1=新的Person();
person1.name=“Jane”;
组。人员。添加(人员1);
Person person2=新的Person();
person2.name=“约翰”;
组。人员。添加(人员2);
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);
编组员。编组(组、系统、输出);
}
}
输出
简
约翰
分组(带分组元素) 您需要添加
@xmlementwrapper
注释以获得分组元素
UM13305973包;
导入java.util.*;
导入javax.xml.bind.annotation.*;
@XmlRootElement
公共课组{
//许多其他领域
@XmlElementWrapper
@xmlement(name=“person”)
public List persons=new ArrayList();
}
输出(带分组元素)
简
约翰
原始答案 您可以执行以下操作:
jaxbcontextjc=JAXBContext.newInstance(Person.class);
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);//格式输出
setProperty(marshaller.JAXB_片段,true);//卸下收割台
for(个人:组。个人){
封送员。封送员(人员、系统、输出);
}
很抱歉信息不完整,但实际上,Group类还有许多其他字段。如果我按照你的建议去做的话,那么我想我也需要把所有其他领域分开整理?我希望一次性封送整个组类。很抱歉信息不完整,但实际上,组类还有许多其他字段。如果我按照你的建议去做的话,那么我想我也需要把所有其他领域分开整理?我希望一次性封送整个组类。默认情况下应该是这样的,除非persons
属性上有@xmlementwrapper
注释。如果有,请尝试删除它。默认情况下,它应该是这样显示的,除非persons
属性上有@xmlementwrapper
注释。如果有,请尝试将其删除。
public class Group {
//many other fields
public List<Person> persons;
}
public class Person {
public String name; ...
}
<person>
<name>..</name>
</person>
<person>
<name>..</name>
</person>
<persons>
<person>
<name>..</name>
</person>
<person>
<name>..</name>
</person>
<persons>