[英]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.