繁体   English   中英

如何在 JAXB 类生成期间更改元素的名称

[英]How to change name of element during JAXB classes generation

我有 mySchema.xsd 文件:`

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="2.0">
<xs:element name="A" type="a"/>
<xs:element name="b" type="b"/>
<xs:complexType name="a">
    <xs:sequence>
        <xs:element name="XXX" type="xs:string"/>
        <xs:element name="Y" type="xs:string"/>
        <xs:element name="Z" type="z"/>
        <xs:element name="PERSON">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="B" type="b" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:sequence>
    <xs:attribute name="xxx" type="xs:string"/>
</xs:complexType>
....

在 cmd 控制台中生成类期间

"%java_home%\bin\xjc" mySchema.xsd

我有错误:

Exception in thread "main" java.lang.IllegalArgumentException: trying to create the same field twice: xxx

我意识到我在 xs:element name="XXX" 和属性 name="xxx" 中具有相同的名称。 我想我应该创建 schemat_binding.xml 文件并更改元素 XXX 的名称,但我不知道如何。

我写了正确的 schema_bindings.xml 也许它会帮助某人:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jxb:bindings xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.0" 
 jxb:extensionBindingPrefixes="xjc" >

 <jxb:bindings schemaLocation="mySchema.xsd" >
    <jxb:schemaBindings>
        <jxb:package name="pl.domain.jaxb.myClasses" />
    </jxb:schemaBindings>
    <jxb:bindings node="//xs:complexType[@name='a']//xs:attribute[@name='xxx']">
        <jxb:property name="xxxOtherName"/>
    </jxb:bindings>
</jxb:bindings>
</jxb:bindings>

并在 cmd 控制台中

"%java_home%\bin\xjc" -b schema_bindings.xml mySchema.xsd

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM