6

当我运行 xjc 来生成代表这个 XSD 片段的 Java 类型时:

  <xs:complexType name="fileUploadRequest">
    <xs:choice>
      <xs:element name="path" type="xs:string"/>
      <xs:element name="file" type="xs:base64Binary"/>
    </xs:choice>
  </xs:complexType>

sequence如果我用可选元素 指定 a ,我得到的类与它本来的样子没有什么区别。

我想要一种有点智能的类型,它一次最多可以让我选择一个元素。例如,如果我调用生成的setFile方法,它应该使路径为空。是否有一些插件可以用于代码生成器的明显要求?

4

1 回答 1

8

绑定.xml

您可以使用以下外部绑定文件来生成您要查找的属性类型:

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          version="2.1">
    <globalBindings choiceContentProperty="true"/>
</bindings> 

XJC 呼叫

使用-b标志引用绑定文件。

xjc -b binding.xml schema.xsd

生成的属性

现在将生成以下属性:

@XmlElements({
    @XmlElement(name = "path", type = String.class),
    @XmlElement(name = "file", type = byte[].class)
})
protected Object pathOrFile;

了解更多信息

于 2013-09-05T15:10:25.587 回答