描述,Android,RSS,XML解析器中的过程标签

时间:2015-11-01 00:50:45

标签: android xml rss

我的Android RSS阅读器有点问题。我正在使用XML解析器从RSS提要中获取标签,但有时,在描述中,我有很多 - 例如,<description> <img src="some random url"><table...,e.t.c。我想处理它们,尤其是IMG标签。我怎么能处理所有这些(因为现在我在描述中有一堆未解析的代码)。这是我的解析器类的读取函数。

   private List<RssItem> readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
    parser.require(XmlPullParser.START_TAG, null, "rss");
    String title = null;
    String link = null;
    String description = null;
    String pubDate = null;
    String url = null;
    List<RssItem> items = new ArrayList<RssItem>();
    while (parser.next() != XmlPullParser.END_DOCUMENT) {
        if (parser.getEventType() != XmlPullParser.START_TAG) {
            continue;
        }
        String name = parser.getName();
        if (name.equals("title")) {
            title = readTitle(parser);
        } else if (name.equals("link")) {
            link = readLink(parser);
        }
        else if(name.equals("description")) {
            description = readDescription(parser);
    }
        else if(name.equals("pubDate")) {
            pubDate = readPubDate(parser);
        }

        if (title != null && link != null) {
            RssItem item = new RssItem(title, link, description, pubDate, url);
            items.add(item);
            title = null;
            link = null;
            description = null;
            pubDate = null;
            url = null;
        }
    }
    return items;
}


    private String readDescription(XmlPullParser parser) throws XmlPullParserException, IOException{
    parser.require(XmlPullParser.START_TAG, ns, "description");
    String description = readText(parser);
    parser.require(XmlPullParser.END_TAG, ns, "description");
    return description;
}

    private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
    String result = "";
    if (parser.next() == XmlPullParser.TEXT) {
        result = parser.getText();
        parser.nextTag();
    }
    return result;
}

提前感谢您的回答

1 个答案:

答案 0 :(得分:1)

我有类似的问题,解决方案的一部分,您可以将描述作为字符串,并将其传递给返回String数组以表示参数的方法。 jsoup库可以帮助提取图像链接。仍然不知道它是否可以提取其他参数。 这是我到目前为止所做的。

public String[] stripHtml(String html) {
        Document document = Jsoup.parse(html);
        String picLink = document.select("img").first().attr("src");
        String result = Html.fromHtml(html).toString();
        result = result.substring(0, result.indexOf('['));
        String[] linkAndDescription = {picLink, result};

        return linkAndDescription;
    }

修改 这是我的情况的完整解决方案,我想解析图像链接和描述文本。

public String[] stripHtml(String html) {
        Document document = Jsoup.parse(html);
        //piclink
        String picLink = document.select("img").first().attr("src");
        //description
        String text = document.select("p").first().text();
        text = text.substring(0, text.indexOf('['));
        String[] linkAndDescription = {picLink, text};

        return linkAndDescription;
    }