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>