适合的XML Marshaller和Unmarshaller

时间:2009-10-15 04:17:14

标签: java xml marshalling xstream unmarshalling

我们有一个需要转换为对象的XML,反之亦然。像Xstream这样的东西。到目前为止,我们使用Xstream来编组和解组object / xml。 然而问题是,与xstream中的XML相对应的对象需要将所有标记作为属性;否则,如果XML包含对象中不存在的任何额外标记;它炸弹。

或者,我们需要编写自定义转换器以确保操作符合要求。我还建议普通的消化器允许从XML到对象的Xpath解析。

我想知道什么是最好的方法;只要:

  1. 我只想将XML转换为Object,反之亦然。
  2. 能够以静默方式忽略XML中映射对象中不存在的任何字段。
  3. 你有什么建议?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

您需要使用此处记录的自定义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忽略它不知道要处理的所有字段。

答案 2 :(得分:0)

我建议使用http://simple.sourceforge.net/我使用注释来映射属性和元素,并且具有“非严格”模式,使您能够从XML文档中读取忽略Java对象中不存在的所有属性和元素。 / p>