当我运行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
,我会得到一个与它本来无法区分的类。
我想要一种具有一点智力的类型,这样我一次最多可以选择1个元素。例如,如果我调用生成的setFile
方法,则应将路径设为null。是否有一些插件我可以用于代码生成器的明显要求?
答案 0 :(得分: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>
XJC致电
使用-b
标志引用绑定文件。
xjc -b binding.xml schema.xsd
生成的属性
现在将生成以下属性:
@XmlElements({
@XmlElement(name = "path", type = String.class),
@XmlElement(name = "file", type = byte[].class)
})
protected Object pathOrFile;
了解更多信息