用于xml到java对象的Mapper库

时间:2015-02-10 09:08:05

标签: jaxb

我们正在为预定义的架构创建jaxb类。模式包含使用xs:choice创建complexTypes的某些元素。在这种情况下,生成的绑定包含一个List,这使得它很复杂,因为我们必须识别实际的实例,然后再进行转换。我们尝试使用绑定自定义属性" choiceContentProperty =" false""改变这种行为。但这似乎不起作用。有否覆盖此行为的任何建议?

1 个答案:

答案 0 :(得分:1)

免责声明:我是jaxb2-simplify-plugin的作者。


这是jaxb2-simplify-plugin

的用例

此:

<xs:complexType name="typeWithElementsProperty">
    <xs:choice maxOccurs="unbounded">
        <xs:element name="foo" type="xs:string"/>
        <xs:element name="bar" type="xs:int"/>
    </xs:choice> 
</xs:complexType>

通常生成这个:

@XmlElements({
    @XmlElement(name = "foo", type = String.class)
    @XmlElement(name = "bar", type = Integer.class),
})
protected List<Serializable> fooOrBar;

但是jaxb2-simplify-plugin你会得到这个:

@XmlElement(name = "foo", type = String.class)
protected List<String> foo;
@XmlElement(name = "bar", type = Integer.class)
protected List<Integer> bar;