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

使用jackson-dataformat-xml无POJO为XML标签添加动态属性方案问询

可行方案(无需自定义序列化器)

利用Jackson XML内置的序列化规则即可实现,核心逻辑如下:
Jackson XML序列化时默认将以@为前缀的键识别为当前节点的XML属性,空字符串键(部分老版本为$键)对应的值会被序列化为节点的文本内容。

修改后的示例代码:

var mapper = new XmlMapper();
HashMap<String, Object> hm = new HashMap<>();

// 构造header节点的属性和文本内容
HashMap<String, Object> headerNode = new HashMap<>();
// 运行时可动态添加任意数量的属性,属性名前加@前缀即可
headerNode.put("@attr1", "text");
headerNode.put("@attr2", "another text");
// 节点文本内容用空字符串键存储
headerNode.put("", "value");

hm.put("header", headerNode);
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(hm));

运行后输出结果完全符合预期:

<HashMap>
  <header attr1="text" attr2="another text">value</header>
</HashMap>

注:如果空字符串键不生效可尝试替换为"$"作为文本内容的键,不同Jackson版本的默认文本键存在微小差异。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:09:03