java.lang.IllegalArgumentException:不支持的元素:rss

时间:2018-02-09 17:36:46

标签: java rss ninjaframework

我正试图“获取”RSS源。

 public RssFeed(String url) {
    _url = url;
    String res = this.api.get(url);
    ByteArrayInputStream bis = new ByteArrayInputStream(res.getBytes());

    try {
        bis.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    XMLDecoder decoder = new XMLDecoder(bis);
    try {
        Object xml = decoder.readObject();
        _response = xml.toString();
    } catch(Exception e) {
        e.printStackTrace();
    } finally {
        decoder.close();
    }
}

当我检查'res'里面的内容时。它似乎得到了整个XML。 但是,我正在尝试解码它,我得到:

java.lang.IllegalArgumentException: Unsupported element: rss

有人可以帮我吗?我是Java的新手。

谢谢!

1 个答案:

答案 0 :(得分:1)

XMLDecoder旨在用于XMLEncoder创建的元素。由于您正在从Web上抓取此XML,因此根据这些类,此XML中的元素可能无效。使用更通用的XML解析器(例如DocumentBuilder::parse())来处理此问题。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

try {
    builder.parse(url);
} catch (IOException e) {
    e.printStackTrace();
} catch (SAXParseException e) {
    e.printStackTrace();
} catch (IllegalArgumentException e) {
    e.printStackTrace();
}