我们有一个 XML 需要转换为对象,反之亦然。像 Xstream 那样的东西。到目前为止,我们一直在使用 Xstream 来编码和解码对象/xml。 但问题是,xstream 中对应 XML 的对象需要将所有标签作为属性;否则,如果 XML 包含对象中不存在的任何额外标签;它爆炸了。
或者,我们需要编写自定义转换器以确保操作按预期进行。我还建议通用消化器允许从 XML 到对象的 Xpath 解析。
我想知道什么是最好的方法;只要:
- 我只想将 XML 转换为 Object,反之亦然。
- 能够静默忽略映射对象中不存在的 XML 中的任何字段。
你有什么建议?
最佳答案
您需要使用此处记录的自定义 MapperWrapper http://pvoss.wordpress.com/2009/01/08/xstream/
XStream xstream = new XStream() {
@Override
protected MapperWrapper wrapMapper(MapperWrapper next) {
return new MapperWrapper(next) {
@Override
public boolean shouldSerializeMember(Class definedIn,
String fieldName) {
if (definedIn == Object.class) {
return false;
}
return super.shouldSerializeMember(definedIn, fieldName);
}
};
}
};
它所做的唯一一件事就是告诉 XStream 忽略所有它不知道要处理的字段。
关于java - 合适的 XML 编码器和解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1570251/