我一直在寻找一种方法来更改xs:任何元素的JAXB行为,因为我们使用的是流而不是DOM。我们需要能够处理巨大的(千兆字节)数据文件/流。JAXB绑定 - 如何定义要在@XmlAnyElement中使用的DomHandler
JAXB将在它们上使用@XmlAnyElement注释生成任何属性。由于我们使用自己的流实现,所以我们需要避免JAXB生成任何属性。但是,因为看起来不可能告诉JAXB绑定忽略xs:任何元素。
在我目前关于这个主题的研究中,我发现,可以编写一个DomHandler,它将被使用。现在,如果这DomHandler应该是这样的:
StreamHandler implements DomHandler<MyStream, StreamResult>
,我们可以利用这个DomHandler做的工作,而不需要到流逻辑旁边添加了生成类。现在我们可以重新使用生成的任何属性。
如下
@XmlAnyElement(StreamHandler.class)
的DomHandler应设置但是,我怎么能在JAXB绑定XJB-文件中生成@XmlAnyElement注释使用此DomHandler定义?
编辑:
我提起这个request并实施了JAXB Maven的插件插件来解决这个问题。我可能会要求将此插件添加到基本插件包中。
谢谢您的答复。您的提案存在的问题是,使用StreamHandler实现DomHandler还需要更改属性的类型。现在任何属性的类型都是T1。 getter和setter方法的签名也应该进行调整,并且注释插件不能完成这项工作。 –
user498380
2012-03-15 11:41:38