gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:51:06 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com