java - JAXB - 将 XML 文件映射到 Java 类

标签 java xml file jaxb mapping

我有一个简单的 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/

相关文章:

java - 导出时不以 Unicode 格式写入

c# - 是否可以创建一个包含多页 tiff 文件所有帧的 base64 字符串?

java - 在 Java 中如何将整数转换为字节?

java - Geotools:wgs84 中缓冲区的边界框

java - 几个小时后无法让我的归并排序工作

java - 解析包含超链接的 xml 字符串

xml - 有没有类似 XML 的编程语言?

java - 尝试构建示例 Red5 Secure 项目,但由于某些依赖项而失败

android - 更改 TextInputLayout 轮廓颜色(或如何覆盖主题/样式中的颜色)

linux - 如何根据文件B中的行号替换文件A中的某些行