gpt4 book ai didi

java - 如何获得 XmlAdapter 的所有者 JAXBContext?

转载 作者:行者123 更新时间:2023-11-30 11:23:43 27 4
gpt4 key购买 nike

我需要为特定的 XmlAdapter 安装 DefaultValidationEventHandler。从我读过的内容来看,你只能这样做:

JAXBContext context = JAXBContext.newInstance(MyAdapter.class);
Unmarshaller um = context.createUnmarshaller();
um.setEventHandler(new DefaultValidationEventHandler());

但是这是不可能的,因为 JAXBContext 是全局的并且在我们的应用程序中隐式创建(由 Spring?)。有什么方法可以为我的 session 获取 JAXBContext 吗?

最佳答案

问题的第 1 部分

How do I get the owner JAXBContext for an XmlAdapter?

默认情况下,XmlAdapter 的实现仅传递需要转换的对象。如果您希望您的 XmlAdapter 保持状态,您可以在 Marshaller/Unmarshaller 上设置它的一个实例,而不是创建一个新实例将使用此实例。

XmlAdapter myAdapter = new MyAdapter(jaxbContext);
unmarshaller.setAdapter(myAdapter);

问题的第 2 部分

I need to install the DefaultValidationEventHandler for a particular XmlAdapter

这可能不是您想要做的。如果您想要对某些对象进行特殊处理,我会创建一个扩展 Unmarshaller.Listener 并实现 ValidationEventHander 的类。并在您的 Unmarshaller 上相应地设置此实例。然后您将知道在进行验证时正在处理哪个对象。

关于java - 如何获得 XmlAdapter 的所有者 JAXBContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21044007/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com