我想在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”的原始值,那将会有很大帮助。
欢迎使用任何其他(与杰克逊相关的)解决方案:-)
答案 0 :(得分:0)
这是一种解决方法,而不是解决方案,但是可以在JsonDeserializer中使用XmlMapper:
xmlMapper.writeValueAsString(jsonNode);
因此,您将再次得到Xml字符串。但是,正如我所写的,这是一种解决方法,我不希望它从Xml到Json,再从Json到Xml。
如果有人(使用杰克逊)得到更好的解决方案,请分享。