Java JAXB:解组并不总是填充某些类?

Java JAXB:解组并不总是填充某些类?,java,xml,jaxb,xsd,Java,Xml,Jaxb,Xsd,我有一个JAXB类生成问题,我希望得到一些帮助。这是XML的一部分,它是我的问题的根源 …现在,由于使用maxOccurs>1选项,这将生成类型。我想避免这些,所以我通过修改代码来使用“包装器”元素,并将maxOccurs向上移动到序列标记,如下所示 对于类生成,它看起来效果很好-JAXB元素被包装器列表替换为String(即list不是一个坏主意,但请注意:根据您的模式,“包装器”元素没有内容是完全合法的。它包含可选项的选择 第二,您可能没有启用模式验证;然后,如果您的文档被破坏,JA

我有一个JAXB类生成问题,我希望得到一些帮助。这是XML的一部分,它是我的问题的根源


…现在,由于使用
maxOccurs>1
选项,这将生成类型。我想避免这些,所以我通过修改代码来使用“包装器”元素,并将
maxOccurs
向上移动到序列标记,如下所示



对于类生成,它看起来效果很好-JAXB元素被包装器列表替换为
String
(即
list不是一个坏主意,但请注意:根据您的模式,“包装器”元素没有内容是完全合法的。它包含可选项的选择

第二,您可能没有启用模式验证;然后,如果您的文档被破坏,JAXB不会抱怨。如果您想启用模式验证,请使用解组器并进行如下初始化:

 unmarshaller.setValidating(true);
 SchemaFactory sf = SchemaFactory.newInstance(
    javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
 Schema schema = sf.newSchema(new File("my-schema.xsd"));
 unmarshaller.setSchema(schema);

感谢您的及时回复。我非常感谢。是的,我有一个验证器,正如您所说的,这就是我捕获它的地方。但是,在调试模式下,如果IDType的包装器(即DriversLicense和SSN)包含两个实例,则在解组XML之后,我查看了这些类,发现它们确实没有填充。因此,即使生成了包装器类,在不应该的情况下解组仍然失败。你知道为什么吗?对更改XML或任何绑定自定义有什么建议吗?再次感谢!