当我运行 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
,我得到的类与它本来的类没有区别。
我想要一种有点智能的类型,这样我一次最多可以选择一个元素。例如,如果我调用生成的 setFile
方法,它应该使路径为空。是否有一些插件可以用于代码生成器的明显要求?
最佳答案
binding.xml
您可以使用以下外部绑定(bind)文件来生成您要查找的属性类型:
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
version="2.1">
<globalBindings choiceContentProperty="true"/>
</bindings>
新江西来电
使用 -b
标志引用绑定(bind)文件。
xjc -b binding.xml schema.xsd
生成的属性
现在将生成以下属性:
@XmlElements({
@XmlElement(name = "path", type = String.class),
@XmlElement(name = "file", type = byte[].class)
})
protected Object pathOrFile;
了解更多信息
关于java - xjc 和 XSD 的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18619463/