Estoy tratando de unmarshal el siguiente xml:Registro de una sub-secundario XML con anotaciones JAXB
<datas xmlns="http://www..." xmlns:atom="http://www.w3.org/2005/atom">
<data>
<atom:link rel="data" type="application/xml" href="http://www.../ckp/data/1"/>
</data>
<data>
<atom:link rel="data" type="application/xml" href="http://www.../ckp/data/2"/>
</data>
<data>
<atom:link rel="data" type="application/xml" href="http://www.../ckp/data/3"/>
</data>
</datas>
Y escribí las siguientes clases de vinculación para ayudar a lograr la serialización/unmarshalling:
public class Links{
@XmlAttribute
private String rel;
@XmlAttribute
private String type;
@XmlAttribute
private String href;
public String getRel() {
return rel;
}
public void setRel(String rel) {
this.rel = rel;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
segunda clase de modelo
@XmlAccessorType(XmlAccessType.FIELD)
public class AuthorMeta {
@XmlElement
private Atomlink author;
public Atomlink getLink() {
return author;
}
public void setLink(Atomlink link) {
this.author = link;
}
La última clase de modelo, esto realmente se vinculará con el xml recuperado
@XmlRootElement(name="datas")
@XmlAccessorType(XmlAccessType.FIELD)
public class Datas{
@XmlAttribute
private String datas;
@XmlElement
private String data;
@XmlValue
private List<DataMeta> link;
public String getDatas() {
return datas;
}
public String getData() {
return data;
}
public List<DataMeta> getAtom() {
return link;
}
public void setDatas(String datas) {
this.datas= datas;
}
public void setData(String data) {
this.data= data;
}
public void setLink(List<DataMeta> link) {
this.link = link;
}
}
embargo, durante el despliegue de la 'estoy tomando un error que dice:
Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
If a class has @XmlElement property, it cannot have @XmlValue property.
this problem is related to the following location:
at private java.util.List org.client.model.Datas.link
at org.client.model.Datas
this problem is related to the following location:
at private java.lang.String org.client.model.Datas.data
at org.client.model.Datas
@XmlAttribute/@XmlValue need to reference a Java type that maps to text in XML.
this problem is related to the following location:
at private java.util.List org.client.model.Datas.link
at org.client.model.Datas
No estoy familiarizado con anotaciones, pero podría alguien decirme cómo usarlos en esta ocasión específica. Quiero crear con las anotaciones algo como esto:
<xmlattribute>
<xmlelement>
<xml sub-child/>
</xmlelement>
<xmlelement>
<xml sub-child/>
</xmlelement>
</xmlattribute>