xsd中的JAXB匿名元素

时间:2018-06-28 12:35:44

标签: java xml xsd jaxb

我有一个不能修改的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有关吗?

0 个答案:

没有答案