У меня 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()
он печатает "один", "два", "три", но a.getValue()
просто ноль.
Могу ли я его аннотировать неправильно? Даже если я установил аннотацию @XmlElement(name="attr")
она, похоже, сделает то же самое.
Это решит вашу проблему:
@XmlValue
public String getValue() { return this.value;}
Это не дочерний элемент, а текущее значение элемента, которое вы ищете.
EDIT: и BTW вам следует добавить аннотацию @XmlRootElement
в класс Thing, если она отсутствует.