使用XStream解析更改XML

时间:2017-03-09 11:20:27

标签: java parsing xml-parsing xstream

我从服务器收到XML响应。但是根据我的要求,反应正在发生变化。我想使用XStream Parser解析XML响应。在从XML转换为POJO时,我得到了“无法识别的字段”的例外。 我只想在转换期间使用某些字段而忽略其余字段。例如: 我的Pojo课程是:

    @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中没有提到的任何其他字段?

2 个答案:

答案 0 :(得分:2)

如何实现XStream?

如果您知道要忽略的字段名称,或者甚至更好地阅读此资源,您可以尝试使用omitField()
http://rafaelsteil.com/omit-unexpected-xml-elements-with-xstream/

答案 1 :(得分:1)

设置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);
    }
}