假设我有一个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>
Run Code Online (Sandbox Code Playgroud)
我使用XStream和以下类解析它:
class ListXML {
public List<ItemXML> list;
}
class ItemXML {
public String id;
public String name;
}
Run Code Online (Sandbox Code Playgroud)
和以下代码:
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);
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是,我现在遇到了一个案例,我将以下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>
Run Code Online (Sandbox Code Playgroud)
有没有办法将我的代码更改为"更强大",所以我可以在不知道"aTagUnknownToMe"标签的情况下获取id为123和345的项目?
是的你可以。
XStream xstream = new XStream();
xstream.ignoreUnknownElements();
Run Code Online (Sandbox Code Playgroud)
或者
XStream xstream = new XStream();
xstream.ignoreUnknownElements("somePattern");
Run Code Online (Sandbox Code Playgroud)
这些方法自 XStream 1.4.5 起可用。