Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXBXML属性_Java_Jaxb - Fatal编程技术网

Java JAXBXML属性

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

我正在使用JAXB将java对象编组为XML。我需要创造一些东西,比如

如何做到这一点?我应该使用什么注释

任何帮助都将受到极大的感谢

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;
    }

}