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