2012-05-07 25 views
5

Tôi cố gắng để unmarshal xml sau:Lập bản đồ một XML sub-con với các chú thích 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> 

Và tôi đã viết các lớp liên kết sau đây để giúp đạt được 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; 
} 

thứ hai mô hình lớp học

@XmlAccessorType(XmlAccessType.FIELD) 
public class AuthorMeta { 

@XmlElement 
private Atomlink author; 

public Atomlink getLink() { 
    return author; 
} 

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

Lớp mô hình cuối cùng, điều này thực sự sẽ được liên kết với truy xuất 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; 
} 




} 

Nhưng trong deployement tôi đang tham gia một lỗi mà nói:

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 

Tôi không quen thuộc với các chú thích nhưng bất cứ ai có thể nói với tôi làm thế nào để sử dụng chúng trong dịp đặc biệt này. Tôi muốn tạo các chú thích giống như sau:

<xmlattribute> 
    <xmlelement> 
    <xml sub-child/> 
    </xmlelement> 
    <xmlelement> 
    <xml sub-child/> 
    </xmlelement> 
</xmlattribute> 

Trả lời

5

Ngoại lệ giữ câu trả lời. Hãy thử thay vào đó.

@XmlElement 
private List<AuthorMeta> link; 
Các vấn đề liên quan