2015-03-19 3 views
1

У меня есть XML-документ структурирован какВыписка из списка XML-элементов с JAXB

<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"), это похоже на то же самое.

ответ

0

Это позволит решить вашу проблему:

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

Это не является дочерним элементом, но текущее значение элемента вы ищете.

EDIT: и BTW вы должны добавить аннотацию @XmlRootElement на класс Thing в случае, если он отсутствует.

+0

Спасибо, я совершенно забыл, что вещь XmlValue даже существовала по какой-то причине. – MichaelB

Смежные вопросы