繁体   English   中英

如何(部分)使用XStream反序列化xml错误

[英]How to (partly) deserialize xml with errors using XStream

假设我有一个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的项目?

是的你可以。

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

要么

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

自XStream 1.4.5起,这些方法就可用了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM