0

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

1 に答える 1

1

で注釈が付けられたプロパティ (および) に で注釈が付けられたLinkクラスを作成できます。@XmlRootElementrelhref@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;
    }

}
于 2013-05-08T20:08:11.090 に答える