我有一个简单的 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;
}
}
当我加载数据时,类型集合为空。我知道我应该在第一个类中使用 @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
用于在表示集合中项目的元素周围添加分组元素。如果您想详细了解它的功能,请查看我的博客中的以下内容:
关于java - JAXB - 将 XML 文件映射到 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22658040/