当将一些对象编组为XML时,我需要在每个生成的XML对象中插入一个额外的字段 - 一种标记。目的不是修改源对象,而是在输出XML中插入该信息。
如果有可能,有什么想法吗?
答案 0 :(得分:3)
有几种可能的方法:
<强> 1。使用XmlAdapter
您可以利用JAXB的XmlAdapter。在这里,您将使用额外字段创建类的版本(适应的类可以扩展原始类)。然后在适配器中转换它们。由于该类的替代版本将包含额外字段,因此它将编组。
<强> 2。使用活页夹
如果你的目标是DOM,那么你可以利用JAXB的Binder。它用于信息集保存,但在编组之后它确实保持了对象和DOM节点之间的链接。编组完成后,您可以使用绑定器查找对象的关联节点并进行更新。
第3。包装输出目标
如果您的输出目标类似于ContentHandler或XMLStreamWriter,那么当达到适当的状态时,您可以触发在嵌套的编组目标上调用的其他事件。
答案 1 :(得分:1)
我能想到的最简单的方法是使用JAXB编组DOM,然后以编程方式将额外信息插入到DOM中,然后将DOM重新编组为XML。
丑陋而低效,但这是我能想到的最好的。