Сопоставление дочернего элемента XML -с аннотациями jaxb

Я пытаюсь распаковать следующий xml:

  <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>

И я написал следующие классы привязки, чтобы помочь выполнить маршаллинг/демаршаллинг:

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;
}

второй класс модели

@XmlAccessorType(XmlAccessType.FIELD)
public class AuthorMeta {

@XmlElement
private Atomlink author;

public Atomlink getLink() {
    return author;
}

public void setLink(Atomlink link) {
    this.author = link;
}

Последний класс модели, он будет фактически связан с извлеченным xml

   @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;
}




}

Но во время развертывания я беру ошибка, в которой говорится:

  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

Я не знаком с аннотациями, но может ли кто-нибудь сказать мне, как их использовать в этом конкретном случае. Я хочу создать с аннотациями что-то вроде этого:

<xmlattribute>
  <xmlelement>
    <xml sub-child/>
  </xmlelement>
  <xmlelement>
    <xml sub-child/>
  </xmlelement>
</xmlattribute>
5
задан Alex Dowining 13 August 2012 в 00:27
поделиться