[英]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.