微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有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”和属性名=“ 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。