java - Jackson XmlMapper:自定义反序列化器 XML 子节点结构为字符串
问题描述
我想在 JAVA 中将 XML 子树反序列化为字符串(使用 Jackson):
输入结构:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<nodeA>text</nodeA>
<nodeB>
<nodeS>
<nodeS1>...</nodeS1>
<nodeS2>...</nodeS2>
</nodeS>
</nodeB>
</root>
变成这样的东西:
public class Pojo {
@JacksonXmlProperty(localName="nodeA")
private String nodeA; // = "text"
@JacksonXmlProperty(localName="nodeB")
@JsonDeserialize(using = MyXmlDeserializer.class)
private String nodeB; // = "<nodeS><nodeS1>...</nodeS1><nodeS2>...</nodeS2></nodeS>"
}
节点nodeS应被视为“原始值”,无需对 xml 进行任何修改,并将其放入 String 类成员中。我已经用自定义反序列化器或@JacksonRawValue 尝试过,但无济于事。
如果一个人可以访问“currentNode”的原始值,那将有很大帮助。
欢迎任何替代(杰克逊相关)解决方案:-)
解决方案
这是一种解决方法而不是解决方案,但可以在 JsonDeserializer 中使用 XmlMapper:
xmlMapper.writeValueAsString(jsonNode);
结果,您将再次获得 Xml 字符串。但正如我所写,它是一种解决方法,我不喜欢它从 Xml 到 Json,再从 Json 到 Xml。
如果有人得到更好的解决方案(使用杰克逊),请分享。
推荐阅读
- android - 如何从适配器获取上下文片段
- scala - Spark streaming 2.4.0 获取 org.apache.spark.sql.AnalysisException:找不到数据源:kafka
- javascript - 如何创建一个独立的潜水元素?弹出时没有工具栏或浏览器的图标
- python - 如何在 django 中制作子页面 url
- wordpress - 如何添加“编辑评论”功能(WordPress)?
- c# - SQL 查询 - C# 中的执行时间慢,Toad 中的执行速度快
- php - 通过唯一链接 PHP 跟踪用户注册
- node.js - 正确地将 global.d.ts 导出到 npm 包中
- c# - 从和到字节数组的元帅类实例
- python - 为什么 YOLO 训练损失没有显着减少且平均 IoU 没有增加?