如何在 JAXB 封送期间添加 XML 处理指令
我想在序列化集合/数组属性时添加处理指令,以获得类似
<alice>
<? array bob ?>
<bob>edgar</bob>
<bob>david</bob>
</alice>
JAXB 这可能吗?或者至少有一些特定的 JAXB 实现?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以利用
XMLStreamWriter
和XmlAdapter
来执行此操作:BobAdapter
关于
XmlAdapter
的注意事项:XMLStreamWriter
。稍后我们将利用 JAXB 的功能在Marshaller
上设置有状态XmlAdapter
。List
转换为List
,我们在这里只是使用XmlAdapter
来获取事件。marshal
方法是我们在XMLStreamWriter
上调用writeProcessingInstruction
的地方:
Alice
@XmlJavaTypeAdapter
注释用于将XmlAdapter
与字段/属性链接:Demo
input .xml
输出
注意
此示例需要使用 EclipseLink JAXB (MOXy),因为 JAXB RI 将抛出以下异常(我是 MOXy 的负责人):
了解更多信息
更新
我已输入增强请求 ( https://bugs.eclipse.org/354286) 添加对处理指令的本机支持。这最终将允许您在您的财产上指定以下内容:
You could leverage an
XMLStreamWriter
and anXmlAdapter
to do this:BobAdapter
Things to note about the
XmlAdapter
:XMLStreamWriter
. We will later leverage JAXB's ability to set a statefulXmlAdapter
on aMarshaller
.List<String>
to aList<String>
, we're just using anXmlAdapter
here to get an event.marshal
method is where we callwriteProcessingInstruction
on theXMLStreamWriter
:Alice
The
@XmlJavaTypeAdapter
annotation is used to link theXmlAdapter
with the field/property:Demo
input.xml
Output
Note
This example needs to be run with EclipseLink JAXB (MOXy) as the JAXB RI will throw the following exception (I'm the MOXy lead):
For More Information
UPDATE
I have entered an enhancement request (https://bugs.eclipse.org/354286) to add native support for processing instructions. This would eventually allow you to specify the following on your property: