java - 合适的 XML 编码器和解码器

标签 java xml marshalling xstream unmarshalling

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

或者,我们需要编写自定义转换器以确保操作按预期进行。我还建议通用消化器允许从 XML 到对象的 Xpath 解析。

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

  1. 我只想将 XML 转换为 Object,反之亦然。
  2. 能够静默忽略映射对象中不存在的 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/

相关文章:

java - JdbcTemplate 在插入时返回 UUID "A result was returned when none was expected."

java - 颠倒句子中每个单词的字符而不颠倒词序

java - 在命令行上运行 Apache Avro

Android布局背景xml纹理

json - 如何避免解析 ISuperObject 类型字段中的 json 对象

XML 编码 : mix attributes and elements

c++ - 如何将接口(interface)指针传递给线程?

Java 线程垃圾是否收集

c# - 包含字段类型的 .net JSON 或 XML 对象序列化和创建

java - 带时间间隔的动态按钮