Java JAXBXML属性
我正在使用JAXB将java对象编组为XML。我需要创造一些东西,比如Java JAXBXML属性,java,jaxb,Java,Jaxb,我正在使用JAXB将java对象编组为XML。我需要创造一些东西,比如 如何做到这一点?我应该使用什么注释 任何帮助都将受到极大的感谢 Java类 public class Item { private String title; private int price; private String productLink; private String rel; public String getTitle() { return title
如何做到这一点?我应该使用什么注释
任何帮助都将受到极大的感谢
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;
}
您可以创建一个用
@XmlRootElement
注释的链接
类,该类带有到属性(rel
和href
),这些属性用@xmldattribute
注释
以下教程将帮助您熟悉:
选项#1-使用EclipseLink JAXB(MOXy)作为您的JAXB提供程序 使用中的
@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.*;
导入javax.xml.bind.annotation.adapters.XmlAdapter;
公共类LinkAdapter扩展了XmlAdapter{
公共静态类链接{
@XmlAttribute
公共字符串rel=“self”;
@XmlAttribute
公共字符串href;
}
@凌驾
公共字符串解组器(链接v)引发异常{
返回v.href;
}
@凌驾
公共链接封送处理(字符串v)引发异常{
链接=新链接();
link.href=v;
返回链接;
}
}
这是无效的XML。@AbdullahShoaib-看起来对medid有效你试着阅读jaxb教程了吗?@jtahlborn谢谢你的建议,我急需它这就是为什么我发布了抱歉,世界上其他地方都不会为你做你的工作,不管对你来说有多“紧急”。非常感谢你的友好回复,不可能有像@XmlPath(“link/@href”)这样的东西。我不明白如何给同样的人以“rel”path@user964147-有很多方法可以绘制此地图。您能更新您的问题以包含您试图将此XML映射到的类结构吗?非常感谢您的回答
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;
}
}