簡體   English   中英

JAXB中的模式轉換

[英]Schema Conversion in JAXB

假設我有一個帶有屬性bar的示例類foo 我已經為JAXB設置了注釋,因此可以將其導出為XML,然后再次重新導入。

@XmlRootElement
public class foo {
    private int bar;

    @XmlElement()
    public int getBar() {
        return bar;
    }

    public void setBar(int bar) {
        this.bar = bar;
    }
}

XML文件應如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<foo>
    <bar>5</bar>
</foo>

現在我已經了解了,我還可以將bar作為屬性。 相反,使用@XmlAttribute會使它看起來像<foo bar="5"/> ,我更喜歡它?

我已經有很多使用舊模式的文件。 手動更改它們會很麻煩,因此我想自動執行。

JAXB是否提供一種方便的方式來轉換文件? 也許對編組和編組使用不同的注釋? 我可以做些什么來實現此目標而無需付出太多努力?

不是JAXB的專家,並且可能會有更優雅的解決方案。 但是無論如何,這是一個解決方案,也許不是那么優雅。

class foo您無論如何都會更改

@XmlElement()
public int getBar() {

@XmlAttribute()    
public int getBar() {

然后,您可以繼承foo來解組舊文件

@XmlRootElement
public class foo2 extends foo {

    @Override
    @XmlElement()    
    public int getBar() {
        return super.getBar();
    }

    @Override
    public void setBar(int bar) {
        super.setBar(bar);
    }
}

然后可能通過以下方式將foo2編組為其超級foo

JAXBContext context = JAXBContext.newInstance(foo.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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