将子XML元素反序列化为XML字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将子XML元素反序列化为XML字符串相关的知识,希望对你有一定的参考价值。
使用Jackson或JAXB,有没有办法将整个子XML元素的子树反序列化/编组成String?
例如,给定以下XML:
<root>
<foo>
<bar>
<baz/>
</bar>
</foo>
</root>
有没有办法反序列化/编组到下面的类
@XmlRootElement
public class Root {
private String foo;
// constructors, getters, setters, etc.
}
结果看起来像Root(foo="<bar><baz/></bar>")
?
答案
您可以为此编写自己的jackson反序列化器:
public class Test {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new XmlMapper();
final SimpleModule module = new SimpleModule("configModule", Version.unknownVersion());
module.addDeserializer(Root.class, new DeSerializer());
mapper.registerModule(module);
// Root readValue = mapper.readValue(<xml source>);
}
}
class DeSerializer extends StdDeserializer<Root> {
protected DeSerializer() {
super(Root.class);
}
@Override
public Root deserialize(JsonParser p, DeserializationContext ctxt) throws Exception {
// use p.getText() and p.nextToken to navigate through the xml and construct Root object
return new Root();
}
}
以上是关于将子XML元素反序列化为XML字符串的主要内容,如果未能解决你的问题,请参考以下文章
当元素可能是许多可能元素之一时,将 XML 元素反序列化为对象
如何在将 xml 反序列化为 c# 对象时获取单个 xml 元素的多个值?