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