在JAXB编组中插入其他字段

在JAXB编组中插入其他字段,jaxb,marshalling,customization,Jaxb,Marshalling,Customization,当将一些对象封送到XML中时,我需要在每个生成的XML对象中插入一个额外的字段-排序标志。其目的不是修改源对象,而是将该信息插入到输出XML中 如果可能的话,有什么想法吗?我能想到的最简单的方法是使用JAXB封送到DOM,然后以编程方式将额外信息插入该DOM,然后将DOM重新封送到XML 丑陋且低效,但这是我能想到的最好的方法。我能想到的最简单的方法是使用JAXB封送到DOM,然后以编程方式将额外信息插入该DOM,然后将DOM重新封送到XML 丑陋和低效,但这是我能想到的最好的方法。有几种可能的

当将一些对象封送到XML中时,我需要在每个生成的XML对象中插入一个额外的字段-排序标志。其目的不是修改源对象,而是将该信息插入到输出XML中


如果可能的话,有什么想法吗?

我能想到的最简单的方法是使用JAXB封送到DOM,然后以编程方式将额外信息插入该DOM,然后将DOM重新封送到XML


丑陋且低效,但这是我能想到的最好的方法。

我能想到的最简单的方法是使用JAXB封送到DOM,然后以编程方式将额外信息插入该DOM,然后将DOM重新封送到XML


丑陋和低效,但这是我能想到的最好的方法。

有几种可能的方法:

1。使用XmlAdapter

您可以利用JAXB的XmlAdapter。在这里,您将创建一个带有额外字段的类版本(修改后的类可以扩展原始类)。然后在适配器中进行转换。由于类的备用版本将包含它将封送出去的额外字段

2。使用活页夹

若封送的目标是DOM,那个么可以利用JAXB的绑定器。它旨在保存信息集,但在封送处理之后,它确实会维护对象和DOM节点之间的链接。封送处理完成后,可以使用绑定器查找对象的关联节点并对其进行更新

3。包装输出目标


如果您的输出目标类似于ContentHandler或XMLStreamWriter,那么当达到适当的状态时,您可以触发对嵌套封送处理目标调用的其他事件。

有几种可能的方法:

1。使用XmlAdapter

您可以利用JAXB的XmlAdapter。在这里,您将创建一个带有额外字段的类版本(修改后的类可以扩展原始类)。然后在适配器中进行转换。由于类的备用版本将包含它将封送出去的额外字段

2。使用活页夹

若封送的目标是DOM,那个么可以利用JAXB的绑定器。它旨在保存信息集,但在封送处理之后,它确实会维护对象和DOM节点之间的链接。封送处理完成后,可以使用绑定器查找对象的关联节点并对其进行更新

3。包装输出目标


如果您的输出目标类似于ContentHandler或XMLStreamWriter,那么当达到适当的状态时,您可以触发对嵌套封送目标调用的其他事件。

您将XML封送到什么类型的对象(StAX、SAX、DOM、stream)?另外,额外的内容是基于对象数据还是像时间戳或作者一样分开?我可能使用DOM将Java对象封送到XML中,但还没有决定。额外的内容是对象外部的内容,是一个新字段,指示对象是否已更改。您将XML编组到什么类型的对象(StAX、SAX、DOM、stream)?另外,额外的内容是基于对象数据还是像时间戳或作者一样分开?我可能使用DOM将Java对象封送到XML中,但还没有决定。额外内容是对象外部的内容,是一个新字段,指示对象是否已更改。