xjc和XSD的选择

blu*_*mpb 4 java xsd choice jaxb xjc

当我运行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>
Run Code Online (Sandbox Code Playgroud)

如果我sequence用可选元素指定了一个类,那么我会得到一个与它本来无法区分的类.

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

bdo*_*han 5

binding.xml

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

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          version="2.1">
    <globalBindings choiceContentProperty="true"/>
</bindings> 
Run Code Online (Sandbox Code Playgroud)

XJC电话

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

xjc -b binding.xml schema.xsd
Run Code Online (Sandbox Code Playgroud)

生成的财产

现在将生成以下属性:

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

欲获得更多信息