簡體   English   中英

Jaxb XML屬性

[英]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一起特性( relhref被注解為) @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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM