Java 合适的XML封送器和解封器
我们需要将XML转换为对象,反之亦然。有点像Xstream。到目前为止,我们一直在使用Xstream对object/xml进行整理和解包。 然而问题是,在xstream中对应于XML的对象需要将所有标记作为属性;否则,如果XML包含对象中不存在的任何额外标记;它爆炸了 或者,我们需要编写自定义转换器,以确保操作按预期进行。我还建议common digester允许从XML到对象的Xpath解析 我想知道什么是最好的方法;只要:Java 合适的XML封送器和解封器,java,xml,marshalling,xstream,unmarshalling,Java,Xml,Marshalling,Xstream,Unmarshalling,我们需要将XML转换为对象,反之亦然。有点像Xstream。到目前为止,我们一直在使用Xstream对object/xml进行整理和解包。 然而问题是,在xstream中对应于XML的对象需要将所有标记作为属性;否则,如果XML包含对象中不存在的任何额外标记;它爆炸了 或者,我们需要编写自定义转换器,以确保操作按预期进行。我还建议common digester允许从XML到对象的Xpath解析 我想知道什么是最好的方法;只要: 我只想将XML转换为对象,反之亦然 能够以静默方式忽略XML中映射对
你有什么建议?你可能想看看这个问题 这些是它列出的一些库
它所做的唯一一件事就是告诉XStream忽略它不知道要处理的所有字段。+1:这在处理多个版本的数据时很重要。假设新版本只是有更多属性,并且在其他方面与期望旧版本的软件向后兼容,那么您希望将新XML解组到旧对象中。您希望客户机能够从XML中解组具有较少属性的较旧版本的对象。我理解您的观点,这也是我的意图。然而,有一个框架能够以最少的努力完成这项工作。就像我说的,在流中我必须编写转换器。还有别的事吗;这在这方面有更大的帮助。我不知道有哪些框架可以帮助实现这一点。或者你可以使用默认情况下提供所需行为的JAXB。为什么要使用像Simple这样的专有解决方案,当你可以使用像JAXB这样的行业标准时,我想你误解了专有这个词,Simple有一个更自由的许可证(Apache)。此外,使用Simple比使用JAXB可以做得更多。最后,它更易于使用,速度更快,重量更轻,适用于Andriod、GAE和任何Java1.5+VM。
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);
}
};
}
};