Sto cercando di unmarshal il seguente codice XML:Mappatura di un sub-bambino XML con annotazioni 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>
E ho scritto le seguenti classi di legame per aiutare ottenere marshalling/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;
}
seconda classe modello
@XmlAccessorType(XmlAccessType.FIELD)
public class AuthorMeta {
@XmlElement
private Atomlink author;
public Atomlink getLink() {
return author;
}
public void setLink(Atomlink link) {
this.author = link;
}
L'ultima classe di modello, questa sarà effettivamente associata con il xml recuperato
@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;
}
}
Ma durante la deployement sto prendendo un errore che 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
Non ho dimestichezza con le annotazioni ma chiunque potrebbe dire a me come usarli in questo specifico occasione. Voglio creare con le annotazioni qualcosa del genere:
<xmlattribute>
<xmlelement>
<xml sub-child/>
</xmlelement>
<xmlelement>
<xml sub-child/>
</xmlelement>
</xmlattribute>