gpt4 book ai didi

Java:将 XSD 文件转换为 Java 类

转载 作者:行者123 更新时间:2023-12-02 13:30:58 26 4
gpt4 key购买 nike

我目前正在使用 xjc 将我的 xsd 文件转换为 java 类。我的应用程序基于 ota-opentravel ( http://www.opentravel.org/ ) 标准,因此我下载了 ota-2016b 版本的 xsd 文件,并尝试转换 java 类中的所有 xsd 文件。我收到以下错误:

Property "Value" is already defined. 
Use <jaxb:property> to resolve this conflict.

The following location is relevant to the above error
line 5848 of file:/OTA_CommonTypes.xsd
line 1836 of file:/OTA_Lists.xsd
line 6820 of file:/OTA_CommonTypes.xsd
etc

我找到了很多如何解决此问题的示例,其中之一是指定 .xjb 文件并为我遇到问题的 .xsd 文件添加一些附加绑定(bind)。 对于只有很少 .xsd 文件的人来说,这是一个很好的方法,但对于必须转换超过三百个 .xsd 文件的我来说,这似乎是不可能的。

我还发现了一些 maven ota_travel 依赖项,其中我已经生成了所有内容,但它们支持的最新版本是 ota_v2014,我还需要版本 ota_v2015 和 ota_v2016。

我用来在java类中转换这些.xsd文件的命令是:sudo xjc -d src/destination/folder1/source/OTA_HotelResModifyNotifRQ.xsd

最佳答案

我正在搜索并找到以下解决方案:

<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:version="2.0">

<jxb:bindings schemaLocation="OpenTravel_2015B_XML/OTA_CommonTypes.xsd" node="/xs:schema">
<jxb:bindings node="//xs:element[@name='CalculationMethod']/xs:complexType/xs:sequence/xs:element[@name='Duration']/xs:complexType">
<jxb:bindings node=".//xs:attribute[@name='Value']">
<jxb:property name="ValueToFixError1"/>
</jxb:bindings>
</jxb:bindings>
<jxb:bindings node="//xs:element[@name='MaximumDuration']/xs:complexType">
<jxb:bindings node=".//xs:attribute[@name='Value']">
<jxb:property name="ValueToFixError2"/>
</jxb:bindings>
</jxb:bindings>
<jxb:bindings node="//xs:element[@name='StartAndEnd']/xs:complexType/xs:choice/xs:element[@name='Duration']/xs:complexType">
<jxb:bindings node=".//xs:attribute[@name='Value']">
<jxb:property name="ValueToFixError3"/>
</jxb:bindings>
</jxb:bindings>
<jxb:bindings node="//xs:complexType[@name='OntologyDistanceType']/xs:sequence/xs:element[@name='Distance']/xs:complexType">
<jxb:bindings node=".//xs:attribute[@name='Value']">
<jxb:property name="ValueToFixError4"/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>

有了这个绑定(bind)文件,XJC 将成功为大多数 ota 版本生成 java 类。对于某些ota版本,我们甚至不需要像ota2008b版本这样的绑定(bind)文件。

为了运行前面的命令,我们只需添加绑定(bind)文件所在的路径:sudo xjc -b/bindings.xjb -d src/destination/folder1/source/OTA_HotelResModifyNotifRQ.xsd

关于Java:将 XSD 文件转换为 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com