【问题标题】:How to (partly) deserialize xml with errors using XStream如何(部分)使用 XStream 反序列化带有错误的 xml
【发布时间】:2014-01-03 05:19:11
【问题描述】:

假设我有一个如下所示的 xml 文件:

<list>
 <item>
  <id>123</id>
  <name>someName</name>
 </item>
 <item>
  <id>234</id>
  <name>anotherName</name>
 </item>
 <item>
  <id>345</id>
  <name>aThirdName</name>
 </item>
</list>

我使用 XStream 和以下类对其进行解析:

class ListXML {
 public List<ItemXML> list;
}

class ItemXML {
 public String id;
 public String name;
}

以及以下代码:

XStream xstream = new XStream(new DomDriver());
xstream.alias("list", ListXML.class);
xstream.alias("item", ItemXML.class);
xstream.addImplicitCollection(ListXML.class, "item");
ListXML result = (ListXML) xstream.fromXML(in);

到目前为止一切顺利。但是,我现在遇到了一个案例,其中输入了以下 xml:

<list>
 <item>
  <id>123</id>
  <name>someName</name>
 </item>
 <item>
  <id>234</id>
  <aTagUnknownToMe>blabla</aTagUnknownToMe>
 </item>
 <item>
  <id>345</id>
  <name>aThirdName</name>
 </item>
</list>

有没有办法将我的代码更改为“更健壮”,这样我就可以在不知道“aTagUnknownToMe”标签的情况下获取 id 为 123 和 345 的项目?

【问题讨论】:

    标签: java xml xstream


    【解决方案1】:

    是的,你可以。

    XStream xstream = new XStream();
    xstream.ignoreUnknownElements();
    

    XStream xstream = new XStream();
    xstream.ignoreUnknownElements("somePattern");
    

    这些方法从 XStream 1.4.5 开始可用。

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多