我有简单的XML文件。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DataTypes>
<Type name="type_integer" type="integer" />
<Type name="valid_string" type="string" />
</DataTypes>
我创建了两个类来将此文件映射到这些类。首先它们应该对应于DataTypes标签。我将此类定义如下:
@XmlRootElement(name = "DataTypes")
public class DataTypes {
private List<DataType> types;
public List<DataType> getTypes() {
return types;
}
public void setTypes(List<DataType> types) {
this.types = types;
}
}
第二类对应于Type标签。我将此类定义如下:
@XmlAccessorType(XmlAccessType.FIELD)
public class DataType {
@XmlAttribute
private String name;
@XmlAttribute
private String type;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
当我加载数据时,类型的集合为null。我知道我应该在第一个类中使用@XmlElementWrapper批注进行收集,但是它的外观如何?这个注释看起来像@XmlElementWrapper(name =“ DataTypes”)吗?但是在这种情况下,该名称将与根元素相同吗?我应该如何正确地做到这一点?
预先感谢您的帮助
使用当前的映射,JAXB需要以下XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DataTypes>
<types name="type_integer" type="integer" />
<types name="valid_string" type="string" />
</DataTypes>
您只需要在DataTypes
类中执行以下操作以指定Type
应使用元素,而不是使用types
从属性名称派生的默认元素。
@XmlElement(name="Type")
public List<DataType> getTypes() {
return types;
}
可以在我的博客上找到更多信息:
关于 @XmlElementWrapper
@XmlElementWrapper
用于在表示集合中项目的元素周围添加分组元素。如果您想进一步了解它可以做什么,请在我的博客上查看以下内容:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句