[英]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.