You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MOXy DynamicJAXBContext:自定义值包装器与属性前缀实现问询

问题与需求

我正将业务流程从XML->StaticJAXB->MongoDocument迁移至XML->DynamicJAXB->MongoDocument。为避免信息丢失、确保后续能从MongoDB的JSON/BSON还原出等效XML,需要实现两个核心配置:

  • 自定义默认值为“value”的值包装器
  • 设置默认无前缀的属性前缀

当前实现代码

我已通过以下代码构建DynamicJAXBContext并完成XML解组:

DynamicJAXBContext dynamicContext = DynamicJAXBContextFactory.createContextFromXSD(xmlSchema, entityResolver, classLoader, properties);
JAXBUnmarshaller unmarshaller = dynamicContext.createUnmarshaller();
JAXBElement root = (JAXBElement) unmarshaller.unmarshal(xml);

获取XML根元素的JAXBElement后,我可以递归遍历DynamicEntityImpl.PropertyWrapper来构建对应JSON/BSON文档,但无法区分XML值与属性名称,导致后续无法从JSON/BSON还原XML。

失败的尝试

我曾尝试配置MOXy的JSON相关属性:

unmarshaller.setProperty(UnmarshallerProperties.JSON_VALUE_WRAPPER, "#value");
unmarshaller.setProperty(UnmarshallerProperties.JSON_ATTRIBUTE_PREFIX, "_");

但我的代码本质是XML解组器,并未使用MOXy的JSON抽象,因此该配置无效。

期望解决方案

希望能在构建DynamicJAXBContext时,通过传入的Map properties设置类似XML_VALUE_WRAPPER和XML_ATTRIBUTE_PREFIX的属性,让SAX解析器识别并处理,以此区分XML值与属性,实现后续的XML还原。

内容的提问来源于stack exchange,提问作者user30736319

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:32:38