我正在使用JAXB将java对象编组为XML。我需要创建像
这样的东西 <link rel="self" href="test" />
如何做到这一点?我应该使用什么注释。
任何帮助都会受到极大关注
Java Class
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;
}
答案 0 :(得分:1)
您可以创建一个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;
}
的 LinkAdapter 强> 的
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;
}
}