У меня есть класс, который я хочу сортировать, и этот класс аннотируется с помощью @XmlRootElement
. Когда я собираю экземпляр этого экземпляра, JAXB
создает XML без ничего, кроме корневого элемента. Когда я вручную аннотирую каждое поле моего класса, тогда все поля включены. Похоже, вы должны аннотировать каждое поле, чтобы оно было включено в вывод. Может ли кто-нибудь подтвердить это? Если да, то почему JAXB
называется configuration-by-exception
когда вам нужно настроить каждое поле?
Не работает:
@XmlRootElement
public class Person {
private int name;
private String email;
private String tel;
//constructor getters/setters
}
Производит <?xml version="1.0" encoding="UTF-8" standalone="yes"?><person/>
.
В приведенном ниже примере представлены все поля на выходе.
@XmlRootElement
public class Person {
@XmlElement private int name;
@XmlElement private String email;
@XmlElement private String tel;
//constructor getters/setters
}
В реализациях JAXB (JSR-222) вообще не требуются аннотации:
Я подозреваю, что что-то не так с вашими парами getter/setter. Вы должны убедиться, что они похожи на следующие:
public int getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
По-видимому, я был жертвой позднего ночного кодирования. При создании геттеров/сеттеров я выбрал только геттеры и что JAXB вообще не понравился.
По умолчанию JAXB не будет обрабатывать свойства только с помощью геттера. С помощью только геттера вам нужно комментировать @XmlElement
.
@XmlElement
public int getName() {
return name;
}