【问题标题】:Parse changing XML using XStream使用 XStream 解析变化的 XML
【发布时间】:2017-07-30 08:40:17
【问题描述】:

我正在接收来自服务器的 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 中未提及的任何其他字段?

【问题讨论】:

  • 您好,如果答案满足您的要求,请将其标记为解决方案。

标签: java parsing xml-parsing xstream


【解决方案1】:

如何实例化 XStream?

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2011-10-07
      • 2016-03-16
      • 1970-01-01
      • 2011-06-05
      相关资源
      最近更新 更多