Ответ 1
По умолчанию JAXB (JSR-222) реализует общедоступные свойства (методы get/set) и аннотированные поля как отображаемые (и отдельные). Отображение по умолчанию @XmlElement
, поэтому ваши свойства будут считаться отображаемыми таким образом.
Решение № 1
Поскольку вы аннотируете поля, вам нужно добавить @XmlAccessorType(XmlAccessType.FIELD)
в свои классы.
@XmlAccessorType(XmlAccessType.FIELD)
public class Parameter {
@XmlAttribute(name = "attr")
private String mName;
@XmlValue
private String mValue;
public String getName() {
return mName;
}
public void setName(String aName) {
this.mName = aName;
}
public String getValue() {
return mValue;
}
public void setValue(String aValue) {
this.mValue = aValue;
}
}
Решение №2
Аннотировать методы get (или set).
public class Parameter {
private String mName;
private String mValue;
@XmlAttribute(name = "attr")
public String getName() {
return mName;
}
public void setName(String aName) {
this.mName = aName;
}
@XmlValue
public String getValue() {
return mValue;
}
public void setValue(String aValue) {
this.mValue = aValue;
}
}
Дополнительная информация
- http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html
- http://blog.bdoughan.com/2011/06/jaxb-and-complex-types-with-simple.html
UPDATE
Вам также необходимо использовать аннотацию @XmlElenent
в свойстве mappings
, чтобы указать имя элемента должно быть mapping
.
@XmlRootElement(name = "mappings")
public class Mappings {
private List<Mapping> mMappings;
@XmlElement(name="mapping")
public List<Mapping> getMappings() {
return mMappings;
}
public void setMappings(List<Mapping> aMappings) {
this.mMappings = aMappings;
}
}