我有一个不能修改的xsd文件,它将多次更改 最重要的是,它具有很多匿名类型,例如:
<xsd:element name="person">
...
<xsd:element name="person">
...
<xsd:element name="person">
...
</xsd:element>
</xsd:element>
</xsd:element>
我使用此xsd使用xjc生成Java类,结果是Person1,Person2,Person3等。 xsd的扩展方式可能会出现其他匿名人员元素,并且在修改后从此xsd生成类之后,将出现Person4,该类将是旧的Person2等。 我的binding.xjb中包含以下行:
<jaxb:globalBindings localScoping="toplevel">
这就是为什么我生成了Person1,Person2,...,PersonN类。
我发现我可以使用
<jaxb:bindings node="//XPATH//To//personX>
<jaxb:class name="someClassName"/>
</jaxb:bindings>
将personX重命名为someClassName,但是随后我必须为所有匿名人员类型添加绑定。我不能一一做到,因为我在代码生成过程中收到了xjc的异常。
当我为所有人员添加绑定时,解组期间会出现类强制转换异常。
除了jaxb:bindings之外,还有其他方法可以生成漂亮的类名吗? 解组期间的异常可能与错误的XPath有关吗?