Java 通过多个文件从模式复合生成JAX-B类

Java 通过多个文件从模式复合生成JAX-B类,java,xsd,jaxb,Java,Xsd,Jaxb,我正在使用JAX-b从XSD模式(由多个文件合成,我不知道这是否是问题)生成类,结果不是我所期望的。创建的对象没有为单个属性提供getter,但它们为属性列表提供getter,如Object,我必须手动投射每个对象 i、 e。 文件lom.xsd具有: <xs:include schemaLocation="common/elementTypes.xsd"/> <xs:include schemaLocation="common/rootElement.xsd"/>

我正在使用JAX-b从XSD模式(由多个文件合成,我不知道这是否是问题)生成类,结果不是我所期望的。创建的对象没有为单个属性提供getter,但它们为属性列表提供getter,如Object,我必须手动投射每个对象

i、 e。 文件lom.xsd具有:

  <xs:include schemaLocation="common/elementTypes.xsd"/>
  <xs:include schemaLocation="common/rootElement.xsd"/>
在其他模式中,它工作得很好,但在不同文件中的模式中,它似乎没有多大帮助。有没有办法从模式中获取第二个版本?
谢谢。

需要确定的一点是,在众多XSD中正确地拥有相同的内容,而不是在少数XSD中,不会改变生成过程的结果。本例中的问题是,您的模式大量使用xsd:choice,因此需要命名getter。选择是无限的,你会得到一个列表;您可以使用自定义绑定使名称更友好,但这不会改变底层结构。在您的情况下,您必须导航列表中的对象,尝试查看它们是否与类“General”或“LifeCycle”匹配,该类将包含您要查找的属性的字符串(请参见下图)


如果没有看到你的模式的相关部分,就不可能回答。好吧,你可以在中找到模式:这并不鼓励人们回答。如果你想得到答案,你必须以易于理解的形式向人们提供相关的信息。你是对的,但元素是嵌套的,要将示例分成三行并不容易。但我会努力找到路。谢谢你好,谢谢你的回复。我已经尝试过了,它也可以工作,但是它不值得再使用Jaxb了,我可以用DOMParser解析对象,我可以有一个更快的解决方案(尤其是用于解组)。感谢you@pokeRex110... 您这样做不会错,特别是如果交换中涉及的数据不是那么大的话。当然,纯XML处理模型在版本控制等方面为您提供了更大的灵活性。;只需确保您以保持代码可维护的方式进行操作。。。。
    <xs:complexType name="lom">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:group ref="general"/>
         <xs:group ref="lifeCycle"/>
       </xs:choice>
      </xs:complexType>
     <xs:element name="lom" type="lom">
       <xs:unique name="lomUnique">
         <xs:selector xpath="*"/>
         <xs:field xpath="@uniqueElementName"/>
      </xs:unique>
     </xs:element>
 public class General{
      List<Object> titleOrlifeCicle
 }
   public class General{
     String title;
     String lifeCicle
   }