从动态xsd生成java类

从动态xsd生成java类,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,我能够通过使用JAX-B从xsd文件生成java类,但如果我的xsd包含重复的元素名,则无法获得有效的java类。请让我们知道如何生成我的java类而没有任何错误 我的xsd文件 <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="SearchRes

我能够通过使用JAX-B从xsd文件生成java类,但如果我的xsd包含重复的元素名,则无法获得有效的java类。请让我们知道如何生成我的java类而没有任何错误

我的xsd文件

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="SearchResults">
    <xs:complexType>
      <xs:sequence>
        <xs:element type="xs:int" name="ResultCode"/>
        <xs:element type="xs:string" name="UserTrackId"/>
        <xs:element name="BusDetails">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Item1">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="ScheduleId"/>
                    <xs:element type="xs:short" name="StationId"/>
                    <xs:element type="xs:short" name="BusId"/>
                    <xs:element type="xs:string" name="BusName"/>
                    <xs:element type="xs:int" name="TransportId"/>
                    <xs:element type="xs:string" name="TransportName"/>
                    <xs:element name="FareDetails">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Item1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element type="xs:int" name="SeatTypeId"/>
                                <xs:element type="xs:string" name="SeatTypeName"/>
                                <xs:element type="xs:short" name="Fare"/>
                                <xs:element type="xs:float" name="ServiceTax"/>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element type="xs:int" name="CoachTypeId"/>
                    <xs:element type="xs:string" name="DepartureTime"/>
                    <xs:element type="xs:byte" name="ArrivalTime"/>
                    <xs:element type="xs:string" name="SeatsAvailable"/>
                    <xs:element type="xs:byte" name="StatusId"/>
                    <xs:element type="xs:string" name="StatusDesc"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Item2">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:int" name="ScheduleId"/>
                    <xs:element type="xs:short" name="StationId"/>
                    <xs:element type="xs:short" name="BusId"/>
                    <xs:element type="xs:string" name="BusName"/>
                    <xs:element type="xs:byte" name="TransportId"/>
                    <xs:element type="xs:string" name="TransportName"/>
                    <xs:element name="FareDetails">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Item1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element type="xs:int" name="SeatTypeId"/>
                                <xs:element type="xs:string" name="SeatTypeName"/>
                                <xs:element type="xs:double" name="Fare"/>
                                <xs:element type="xs:double" name="ServiceTax"/>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="Item2">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element type="xs:int" name="SeatTypeId"/>
                                <xs:element type="xs:string" name="SeatTypeName"/>
                                <xs:element type="xs:double" name="Fare"/>
                                <xs:element type="xs:double" name="ServiceTax"/>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element type="xs:int" name="CoachTypeId"/>
                    <xs:element type="xs:string" name="DepartureTime"/>
                    <xs:element type="xs:string" name="ArrivalTime"/>
                    <xs:element type="xs:string" name="SeatsAvailable"/>
                    <xs:element type="xs:int" name="StatusId"/>
                    <xs:element type="xs:string" name="StatusDesc"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Item3">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:int" name="ScheduleId"/>
                    <xs:element type="xs:string" name="StationId"/>
                    <xs:element type="xs:string" name="BusId"/>
                    <xs:element type="xs:string" name="BusName"/>
                    <xs:element type="xs:int" name="TransportId"/>
                    <xs:element type="xs:string" name="TransportName"/>
                    <xs:element name="FareDetails">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Item1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element type="xs:int" name="SeatTypeId"/>
                                <xs:element type="xs:string" name="SeatTypeName"/>
                                <xs:element type="xs:double" name="Fare"/>
                                <xs:element type="xs:double" name="ServiceTax"/>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element type="xs:int" name="CoachTypeId"/>
                    <xs:element type="xs:string" name="DepartureTime"/>
                    <xs:element type="xs:string" name="ArrivalTime"/>
                    <xs:element type="xs:string" name="SeatsAvailable"/>
                    <xs:element type="xs:int" name="StatusId"/>
                    <xs:element type="xs:string" name="StatusDesc"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

如果您像下面这样使用命令行,请尝试添加“-nv”选项以跳过严格的验证

xjc -d src -p -nv com.gsdev.jaxb.beans employee.xsd

“-nv”=>默认情况下,XJC绑定编译器在处理源模式之前对其执行严格的验证。使用此选项可禁用严格的架构验证。这并不意味着绑定编译器将不执行任何验证,它只是意味着它将在上述xsd中执行不太严格的验证

,Item1和Item2是重复的元素名称。请帮助我……您是如何从XSD生成类的?@Balu是否可能看到错误?你能把它贴在这里吗?多么糟糕的模式设计!有没有想过重构模式并创建一个可以被每个项目重用的公共类型?@Garry我正在从eclipse的jax-b插件生成java类
xjc -d src -p -nv com.gsdev.jaxb.beans employee.xsd