Извлечь значение из списка элементов xml с помощью jaxb

1

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

Теги:
jaxb

1 ответ

0
Лучший ответ

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

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

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

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

  • 0
    Спасибо, я полностью забыл, что XmlValue вообще существует по какой-то причине.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню