xsd到JavaBeanJAXB字段名

xsd到JavaBeanJAXB字段名,java,xsd,jaxb,Java,Xsd,Jaxb,我已经从以下xsd文件创建了Javabean person.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" elementFormDefault="qualified" jxb:version="2.0

我已经从以下xsd文件创建了Javabean

person.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:jxb="http://java.sun.com/xml/ns/jaxb" elementFormDefault="qualified"
           jxb:version="2.0">

    <xs:annotation>
        <xs:appinfo>
            <jxb:globalBindings>
                <jxb:serializable uid="1"/>
            </jxb:globalBindings>
            <jxb:schemaBindings>
                <jxb:package name="com.thiyanesh"/>
            </jxb:schemaBindings>
        </xs:appinfo>
    </xs:annotation>

    <xs:element name="person">
      <xs:complexType>
        <xs:sequence>
            <xs:element name="id" type="xs:long"/>
            <xs:element name="name" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
</xs:schema>

team.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:jxb="http://java.sun.com/xml/ns/jaxb" elementFormDefault="qualified"
           jxb:version="2.0">

    <xs:import schemaLocation="person.xsd"/>

    <xs:annotation>
        <xs:appinfo>
            <jxb:globalBindings>
                <jxb:serializable uid="2"/>
            </jxb:globalBindings>
            <jxb:schemaBindings>
                <jxb:package name="com.thiyanesh"/>
            </jxb:schemaBindings>
        </xs:appinfo>
    </xs:annotation>

    <xs:element name="team">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="person" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

目标是将人员定义为单独的类,并包括团队类中的人员列表

现在,类团队包含该字段

List<Person> person;
列出人员;
有没有办法给这个字段起一个不同的名字?说“成员”

列出成员;

我可能无法编辑生成的类。

您可以编辑生成的类并重命名字段(但保留或添加@xmlement(name=“person”)在顶部)

您还可以自定义架构绑定,例如:


但与简单的注释相比,这是一件痛苦的事情。只接受person而不是member更容易。

此绑定工作正常

<bindings version="2.0" xmlns="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"
    xmlns:annox="http://annox.dev.java.net"
    xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">

    <bindings schemaLocation="../path/team.xsd">

            <bindings node="//xs:element[@name='team']//xs:complexType//xs:sequence//xs:element[@ref='person']">
                <property name="members"/>
            </bindings>

    </bindings>
</bindings>

否则



有没有一种方法可以在不接触generate类的情况下执行此操作?也更新了问题。是否添加了指向架构自定义的链接
<bindings version="2.0" xmlns="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"
    xmlns:annox="http://annox.dev.java.net"
    xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">

    <bindings schemaLocation="../path/team.xsd">

            <bindings node="//xs:element[@name='team']//xs:complexType//xs:sequence//xs:element[@ref='person']">
                <property name="members"/>
            </bindings>

    </bindings>
</bindings>
    <xs:element name="team">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="person" minOccurs="0" maxOccurs="unbounded">
                    <xs:annotation>
                        <xs:appinfo>
                            <jxb:property name="members" />
                        </xs:appinfo>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>