1

SWT ウィジェットのリストを格納するクラスがあります。

@XmlRootElement
class Test {
    private List<Widget> widgets;

    public List<Widget> getWidgets() {
        return widgets;
    }

    public void setWidgets(List<Widget> widgets) {
        this.widgets = widgets;
    }
}

JAXB を使用して XML にマーシャリングしました。ただし、これらのウィジェットはマーシャリングされません。

Test t = new Test();
t.setWidgets(widgets);
JAXBContext context = JAXBContext.newInstance(Test.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(t, System.out);

これは出力です:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<test>
    <widgets/>
    <widgets/>
    <widgets/>
</test>
4

2 に答える 2

1

JAXB (JSR-222)実装は、Widgetリフレクションを使用するサブクラスを決定できないため、JAXBContext を作成するときにサブクラスを含める必要があります。

JAXBContext context = JAXBContext.newInstance(Test.class, Button.class, Label.class);
于 2012-07-25T09:32:50.253 に答える
0

SWT Widget クラスには JAXB アノテーションがないため、クラス内のアノテーションを独自のウィジェット詳細クラス (アノテーションを含む) に置き換えるかXmlJavaTypeAdapter、Widget を独自の詳細クラスにマップする for そのプロパティを実装する必要があります。

あなたも使いたいかもしれません

    @XmlElement(name = "widget")

だからあなたは<widget>代わりに得る<widgets>

于 2012-07-25T06:45:36.793 に答える