[英]Jaxb XML Attribute
我正在使用JAXB將Java對象編組為XML。 我需要創建一些類似的東西
<link rel="self" href="test" />
如何做到這一點? 我應該使用什么注釋。
任何幫助將不勝感激
Java類
public class Item {
private String title;
private int price;
private String productLink;
private String rel;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@XmlPath("link/@href")
public String getProductLink() {
return productLink;
}
public void setProductLink(String productLink) {
this.productLink = productLink;
}
您可以創建一個Link
與注釋類@XmlRootElement
一起特性( rel
和href
被注解為) @XmlAttribute
。
以下教程將幫助您熟悉JAXB(JSR-222) :
選項#1-使用EclipseLink JAXB(MOXy)作為JAXB提供程序
使用EclipseLink JAXB(MOXy)中的@XmlPath
擴展,您可以執行以下操作:
@XmlPath("link[@rel='self']/@href")
public String getProductLink() {
return productLink;
}
欲獲得更多信息
選項#2-使用JAXB提供程序
您可以使用XmlAdapter
@XmlElement(name="link")
@XmlJavaTypeAdapter(LinkAdapter.class)
public String getProductLink() {
return productLink;
}
鏈接適配器
import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class LinkAdapter extends XmlAdapter<LinkAdapter.Link, String>{
public static class Link {
@XmlAttribute
public String rel = "self";
@XmlAttribute
public String href;
}
@Override
public String unmarshal(Link v) throws Exception {
return v.href;
}
@Override
public Link marshal(String v) throws Exception {
Link link = new Link();
link.href = v;
return link;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.