使用 Jackson 或 JAXB,有没有办法将子 XML 元素的整个子树反序列化/编码为字符串?
例如,给定以下 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();
}
}
关于java - 将子 XML 元素反序列化为 XML 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52169960/