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