使用 XStream 解析更改 XML
Parse changing XML using XStream
我收到来自服务器的 XML 响应。但响应正在根据我的要求而改变。我想使用 XStream 解析器解析 XML 响应。从 XML 转换为 POJOs 时,我收到 "unrecognized fields" 的异常。
我在转换期间只想要一些字段而忽略其余部分。例如:
我的 Pojo class 是:
@XStreamAlias("Book")
class Book{
@XStreamAlias("author")
private String author;
@XStreamAlias("title")
private String title;
//getters and setters
}
如果我的回答是:
<book>
<author>ABC</author>
<title>XYZ</title>
</book>
转换工作正常。但如果我的回答是:
<book>
<author>ABC</author>
<title>XYZ</title>
<pages>50</pages>
</book>
我在转换过程中遇到异常。如何避免不需要的字段出现此类异常?有没有办法告诉 XStream 避免在 POJO 中没有提到的任何其他字段?
如何实例化XStream?
如果您知道要省略的字段的名称,您可以尝试使用 omitField()
,或者更好的是,阅读此资源。
http://rafaelsteil.com/omit-unexpected-xml-elements-with-xstream/
设置XStream忽略未知元素:xStream.ignoreUnknownElements()
@XStreamAlias("Book")
class Book {
@XStreamAlias("author")
String author;
@XStreamAlias("title")
String title;
public static void main(String[] args) {
String input = "<Book>"
+ "<author>ABC</author>"
+ "<title>XYZ</title>"
+ "<pages>50</pages>"
+ "</Book>";
XStream xStream = new XStream();
xStream.ignoreUnknownElements();
xStream.processAnnotations(Book.class);
Book book = (Book) xStream.fromXML(input);
}
}
我收到来自服务器的 XML 响应。但响应正在根据我的要求而改变。我想使用 XStream 解析器解析 XML 响应。从 XML 转换为 POJOs 时,我收到 "unrecognized fields" 的异常。 我在转换期间只想要一些字段而忽略其余部分。例如: 我的 Pojo class 是:
@XStreamAlias("Book")
class Book{
@XStreamAlias("author")
private String author;
@XStreamAlias("title")
private String title;
//getters and setters
}
如果我的回答是:
<book>
<author>ABC</author>
<title>XYZ</title>
</book>
转换工作正常。但如果我的回答是:
<book>
<author>ABC</author>
<title>XYZ</title>
<pages>50</pages>
</book>
我在转换过程中遇到异常。如何避免不需要的字段出现此类异常?有没有办法告诉 XStream 避免在 POJO 中没有提到的任何其他字段?
如何实例化XStream?
如果您知道要省略的字段的名称,您可以尝试使用 omitField()
,或者更好的是,阅读此资源。
http://rafaelsteil.com/omit-unexpected-xml-elements-with-xstream/
设置XStream忽略未知元素:xStream.ignoreUnknownElements()
@XStreamAlias("Book")
class Book {
@XStreamAlias("author")
String author;
@XStreamAlias("title")
String title;
public static void main(String[] args) {
String input = "<Book>"
+ "<author>ABC</author>"
+ "<title>XYZ</title>"
+ "<pages>50</pages>"
+ "</Book>";
XStream xStream = new XStream();
xStream.ignoreUnknownElements();
xStream.processAnnotations(Book.class);
Book book = (Book) xStream.fromXML(input);
}
}