繁体   English   中英

从动态XSD生成Java类

[英]Generate java classes from dynamic xsd

我可以使用JAX-B从xsd文件生成Java类,但是如果我的xsd包含重复的元素name,则无法获得有效的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绑定编译器在处理源模式之前会对源模式执行严格的验证。 使用此选项可以禁用严格的模式验证。 这并不意味着绑定编译器将不执行任何验证,仅表示它将执行不太严格的验证

暂无
暂无

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

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