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

标签 java xml 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 开始可用。

关于java - 如何使用 XStream(部分)反序列化有错误的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600381/

相关文章:

java - 如何以编程方式知道谁(其他 java 文件/类)正在使用我的 java 类?

java - Spring Boot 2.0服务: messages delivered from Rabbit mq but not reaching java code

java - getSession 关闭 Socket

java - Image() 已经在使用 Lombok 的 Maven 构建期间在类中定义

java - JAXB - 生成示例 xml?

sql - 如何排序由XMLAGG函数聚合的字段?

java - 使用xslt将xml转换为xsl-fo时如何创建超链接?

java - 使用 XSTREAM 将 XML 解析为 ArrayList

java - 如何使用 xStream 反序列化多个对象

java - xstream可以反序列化复杂的数组吗?