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

时间:2015-03-19 13:29:10

标签: java xml 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()只是null。 / p>

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

1 个答案:

答案 0 :(得分:0)

这将解决您的问题:

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

这不是子元素,而是您正在寻找的当前元素值。

编辑:和BTW你应该在Thing类上添加一个@XmlRootElement注释,以防它丢失。