java - xjc 和 XSD 的选择

标签 java xsd 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>

如果我指定一个带有可选元素的 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/

相关文章:

java - 读取iso-8859-1中的特殊字符并获取相同字符的utf-8值

java - 当我生成 apk 并安装在我的设备中时,我尝试使用 firebase otp 验证我的手机号码,显示 SHA-1 错误

xml - 如何将 2 个 xsd 模式包含到 1 个 xml 文件中?

java - XMLUnit 是否具有带有命名空间的 XPath 输出?

wsdl - 从 XSD 文件生成 WSDL

java - 使用 JAXB 从 XML 文件中提取值

java - 将对象存储到 HashMap 中

java - 如何解决java.lang.NoClassDefFoundError : javax/xml/bind/JAXBException

java - jaxb idref 字符串适配器

java - Jackson - 将 JsonNode 转换为 xml