IT虾米网

java之使用 JaxB 创建 Java 类

developer 2023年10月07日 编程语言 1099 0

我尝试从这个 XSD 中使用 JaXB 创建 Java 类 http://pda.rosreestr.ru/upload/www/files/02_V04_STD_Region_Cadastr_KV.rar但出现了这些错误。

parsing a schema... 
[WARNING] Simple type "dAllDocuments" was not mapped to Enum due to EnumMemberSizeCap limit. Facets count: 298, current limit: 256. You can use customization attribute "typesafeEnumMaxMembers" to extend the limit. 
line 3 of file:/D:/liferay-develop/workspace/JABX_test/src/02_V04_STD_Region_Cadastr_KV/dAllDocuments.xsd 
 
compiling a schema... 
[ERROR] Two declarations cause a collision in the ObjectFactory class. 
line 1645 of file:/D:/liferay-develop/workspace/JABX_test/src/02_V04_STD_Region_Cadastr_KV/STD_Region_Cadastr_KV.xsd 
 
[ERROR] (Related to above error) This is the other declaration.    
line 1587 of file:/D:/liferay-develop/workspace/JABX_test/src/02_V04_STD_Region_Cadastr_KV/STD_Region_Cadastr_KV.xsd 
 
Failed to produce code. 

当我使用另一个模式时,一切都很好。我不擅长使用 XML,您能告诉我这些错误是什么意思以及如何解决吗?

更新

我尝试在类生成中使用 binding.xml 但出现此错误。

C:\Documents and Settings\kliver\Мои документы\Загрузки\jaxb-ri-2.2.6\bin>xjc -d 
out -b binding.xml D:/liferay-develop/workspace/JABX_test/src/02_V04_STD_Region 
_Cadastr_KV/STD_Region_Cadastr_KV.xsd 
parsing a schema... 
[ERROR] "D:/liferay-develop/workspace/JABX_test/src/02_V04_STD_Region_Cadastr_KV 
/STD_Region_Cadastr_KV.xsd" is not a part of this compilation. Is this a mistake 
 for "file:/D:/liferay-develop/workspace/JABX_test/src/02_V04_STD_Region_Cadastr 
_KV/STD_Region_Cadastr_KV.xsd"? 
 line 6 of file:/C:/Documents%20and%20Settings/kliver/%D0%9C%D0%BE%D0%B8%20%D0% 
B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B/%D0%97%D0%B0%D0%B3%D1%80%D1%8 
3%D0%B7%D0%BA%D0%B8/jaxb-ri-2.2.6/bin/binding.xml 
 
[WARNING] Simple type "dAllDocuments" was not mapped to Enum due to EnumMemberSi 
zeCap limit. Facets count: 298, current limit: 256. You can use customization at 
tribute "typesafeEnumMaxMembers" to extend the limit. 
 line 3 of file:/D:/liferay-develop/workspace/JABX_test/src/02_V04_STD_Region_C 
adastr_KV/dAllDocuments.xsd 
 
Failed to parse a schema. 

更新 2

我试试这个绑定(bind):

<jxb:bindings  
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
version="2.1"> 
 
    <!-- Raise theEnumMemberSizeCap limit --> 
    <jxb:bindings > 
       <jxb:globalBindings typesafeEnumMaxMembers="2000"/> 
   </jxb:bindings> 
 
   <jxb:bindings schemaLocation="D:\liferay-develop\workspace\JABX_test\src\02_V04_STD_Region_Cadastr_KV\STD_Region_Cadastr_KV.xsd"> 
       <jxb:bindings node="//xs:complexType[@name='tRight_Owner']"> 
           <jxb:class name="tRight_Owner2"/> 
       </jxb:bindings> 
   </jxb:bindings> 
 
</jxb:bindings> 

这个控制台命令:

C:\Documents and Settings\kliver\Мои документы\Загрузки\jaxb-ri-2.2.6\bin>xjc -d 
out -b binding.xml D:\liferay-develop\workspace\JABX_test\src\02_V04_STD_Region 
_Cadastr_KV\STD_Region_Cadastr_KV.xsd 

请您参考如下方法:

您可以使用外部绑定(bind)文件为其中一种复杂类型指定不同的类名。

binding.xml

<jxb:bindings  
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    version="2.1"> 
 
   <!-- Raise theEnumMemberSizeCap limit --> 
   <jxb:bindings > 
       <jxb:globalBindings typesafeEnumMaxMembers="2000"/> 
   </jxb:bindings> 
 
    <jxb:bindings schemaLocation="your-schema.xsd"> 
            <jxb:bindings node="//xs:complexType[@name='tRight_Owner']"> 
                <jxb:class name="TRight_Owner2"/> 
            </jxb:bindings> 
    </jxb:bindings> 
 
</jxb:bindings> 

xjc 命令行将是:

xjc -d out -b binding.xml your-schema.xsd 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!