<MyRoot>
<Person>
<Name>Joe</Name>
<Age>20</Age>
</Person>
<Address>
<HouseName>Joe</HouseName>
<Place>Delhi</Place>
</Address>
<Person>
<Name>James</Name>
<Age>21</Age>
</Person>
<Address>
<HouseName>Joe</HouseName>
<Place>Mumbai</Place>
</Address>
</MyRoot>
从xml上方,您可以看到person和address标签没有包装在包装标签中。我想使用相同格式的JAXB生成xml。没有包装标签,我不知道该怎么做。
答案 0 :(得分:0)
您是否正在寻找创建包含“人员”列表和地址列表的java对象?
public class MyRootObject {
private List<Person> persons;
private List<Address> addresses;
}
如果以上是您打算做的事情,请注意XML对象将更改...
答案 1 :(得分:0)
如果您真的想保留<Person> <Address> <Person> <Address>
之类的混合序列(正如您对@Vankuisher的回答所说的那样),
那么您需要将Person
和Address
放在两个不同的List
中,
但在相同 List
中。
为此,Person
和Address
必须是公共超类的子类
(例如class Person extends Item
和class Address extends Item
)。
然后,您使用@XmlElements
批注定义之间的映射
XML元素名称和Java类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "MyRoot")
public class MyRoot {
@XmlElements({
@XmlElement(name = "Address", type = Address.class),
@XmlElement(name = "Person", type = Person.class)
})
private List<Item> items;
// public getters and setters (omitted here for brevity)
}
封送此类MyRoot
对象时,您将获得XML输出
并具有与List<Item>
中相同的项目顺序。