哪个Java xml框架可以处理模式中带有限制/扩展的代码生成?

哪个Java xml框架可以处理模式中带有限制/扩展的代码生成?,java,xsd,restriction,Java,Xsd,Restriction,有一组XSD文件,其中描述了以下类型: A是一个包含各种元素的复杂类型。 B限制A,只保留其部分元素 C扩展了B,添加了一些元素 因此,这意味着由使用XML模式中的C类型的工具生成的Java类应该只包含由B保留的a的成员,以及由C添加的新成员 为了使事情变得更加困难,B实际上更改了某些元素的minOccurs属性 有没有框架可以处理这个问题?我尝试过EMF和限制甚至没有反映到代码中。使用Castor CodeGenerator。很好。 请参见以下是另一种选择(供您选择): (ADB)支持类型层次

有一组XSD文件,其中描述了以下类型:

A是一个包含各种元素的复杂类型。 B限制A,只保留其部分元素 C扩展了B,添加了一些元素

因此,这意味着由使用XML模式中的C类型的工具生成的Java类应该只包含由B保留的a的成员,以及由C添加的新成员

为了使事情变得更加困难,B实际上更改了某些元素的minOccurs属性


有没有框架可以处理这个问题?我尝试过EMF和限制甚至没有反映到代码中。

使用Castor CodeGenerator。很好。
请参见

以下是另一种选择(供您选择): (ADB)支持类型层次结构和自定义限制

Pros:它生成完整的模式结构,并从每个元素实现getter和setter。在每种类型的setter上,y检查模式定义的restrictions,当要设置的值与限制不匹配时,它抛出一个异常(在自己的set方法上),并且它支持StAX进行序列化/反序列化


缺点:生成的代码可能会导致有点过于冗长,验证异常的解释性太少,它意味着“简单”(因此,对于复杂的类型扩展或限制,您可能会发现一些问题),并且它包含一些与ADB库的依赖关系(即,生成的bean实现org.apache.axis2.databinding.ADBBean接口)。

使用复杂XSD时,我的效果最好

  • 它完全支持XML模式
  • 它是唯一能够为我不得不使用的复杂xml模式生成正确代码的框架
另一个真正有用的功能是:


当解组XML实例时,完整的XML信息集将被保留,并可供开发人员使用。这是至关重要的,因为XML的子集不容易用java表示。例如,在特定的应用程序中,可能需要元素或注释的顺序。

ADB页面底部包含以下内容:“已知的限制ADB是一个‘简单’的数据绑定框架,并不是用来编译所有类型的架构。以下限制是最突出的。1.复杂的类型扩展和限制。”是的,我提到它是一个缺点。但我用它序列化了一些herarchichal数据(一个父类、一组扩展类、一组组合/聚合关系),并具有通常XSD支持的限制(如可空性、出现次数、正则表达式匹配等),工作正常。这里的要点是,验证异常是使用空消息生成的,这可能是一个问题。感谢Martin,它似乎确实支持完整模式。