使用 jaxb 从 xml 元素列表中提取值

Extract value from list of xml elements with jaxb

我有一份 XML 文档结构如下

<thing>
  <attr name="one">first</attr>
  <attr name="two">second</attr>
  <attr name="three">third</attr>
</thing>

我的 JAXB 类 是这样设置的:

public class Thing {
    List<Attribute> attr = new ArrayList<Attribute>();
    @XmlElement(name="attr")
    public List<Attribute> getAttr() { return this.attr; }
    public void setAttr(List<Attribute> attr) { this.attr = attr; }
}

public class Attribute {
    String value;
    String name;

    @XmlAttribute
    public String getName() { return this.name; }
    public void setName(String name) { this.name = name; }

    @XmlElement
    public String getValue() { return this.value;}
    public void setValue(String value) { this.value = value; }
}

当我解组文档时,如果我循环 for (Attribute a : thing.getAttr()) 执行 a.getName() 它会打印 "one"、"two"、"three" 但 a.getValue() 只是空值。

我是不是注释错了?即使我将注释设置为 @XmlElement(name="attr"),它似乎也做同样的事情。

这将解决您的问题:

@XmlValue
public String getValue() { return this.value;}

这不是子元素,而是您要查找的当前元素值。

编辑: 顺便说一句,你应该在 Thing class 上添加一个 @XmlRootElement 注释,以防它丢失。