0

我正在尝试从FeedBurnerURL 获取图像,但我无法做到这一点。

编辑:

这是网址

我注意到图像位于 < content:encoded > 标签内。

我也无法从此URL检索图像。

我无法从中提取信息。

这是我的代码:

class RSSHandler extends DefaultHandler {

private Post currentPost = new Post();

StringBuffer chars = new StringBuffer();

@Override
public void startElement(String uri, String localName, String qName,
        Attributes atts) {

    chars = new StringBuffer();


    if (localName.equalsIgnoreCase("thumbnail")) {          
        String thumbnail = atts.getValue("url");    
        currentPost.setThumbnail(thumbnail);
    }
}

@Override
public void endElement(String uri, String localName, String qName)
        throws SAXException {

    if (localName.equalsIgnoreCase("title")
            && currentPost.getTitle() == null) {
        currentPost.setTitle(chars.toString());

    }
    String pubd;
    if (localName.equalsIgnoreCase("pubDate")
            && currentPost.getPubDate() == null) {

        currentPost.setPubDate(chars.toString());
        Home.DATE_1.add(chars.toString()); 
    }

    if (localName.equalsIgnoreCase("link") && currentPost.getUrl() == null) {

        currentPost.setUrl(chars.toString());
    }

    if (localName.equalsIgnoreCase("item")) {
        FragmentView.PostList.add(currentPost);

        currentPost = new Post();
        }

}

@Override
public void characters(char ch[], int start, int length) {
    chars.append(new String(ch, start, length));
}

}

我正在使用这个处理程序从 RSS 提要中获取信息。对于其他提要,一切正常,但是当它是FeedBurnerURL 时,我似乎无法获取图像。

4

2 回答 2

0

您可以通过正则表达式从内容中提取图像,但如果您使用 XmlPullParser 代替它是首选。

这个库有一个很好的例子: https ://github.com/Pkmmte/PkRSS

此代码片段可在该库的 Rss2Parser.java 文件中找到,它完全可以满足您的需要。只需将内容作为参数传递。

/**

 * Pulls an image URL from an encoded String.

 *

 * @param encoded The String which to extract an image URL from.

 * @return The first image URL found on the encoded String. May return an

 * empty String if none were found.

 */

private String pullImageLink(String encoded) {

    try {

        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

        XmlPullParser xpp = factory.newPullParser();


        xpp.setInput(new StringReader(encoded));

        int eventType = xpp.getEventType();

        while (eventType != XmlPullParser.END_DOCUMENT) {

            if (eventType == XmlPullParser.START_TAG && "img".equals(xpp.getName())) {

                int count = xpp.getAttributeCount();

                for (int x = 0; x < count; x++) {

                    if (xpp.getAttributeName(x).equalsIgnoreCase("src"))

                        return xpp.getAttributeValue(x).replaceAll("-110x52", "");

                }

            }

            eventType = xpp.next();

        }

    }

    catch (Exception e) {

        log(TAG, "Error pulling image link from description!\n" + e.getMessage(), Log.WARN);

    }


    return "";

}
于 2014-08-21T07:07:20.997 回答
0

首先,您需要获取图像的 URL

<media:content url="http://thenextweb.com/wp-content/blogs.dir/1/files/2012/11/SC20121102-150432.png" medium="image">
<media:title type="html">SC20121102-150432</media:title>
<media:thumbnail url="http://thenextweb.com/wp-content/blogs.dir/1/files/2012/11/SC20121102-150432-150x150.png" />

将图像转换为位图后,示例代码:

public Bitmap getBitmapFromURL(String src) {
    try 
    {
        URL url = new URL(src);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        return BitmapFactory.decodeStream(input);
    } 
    catch (IOException e) 
    {
        //TODO on error
        return null;
    }
}

编辑:

首先阅读您的 HTML 文件,然后使用正则表达式获取带有 IMG 标签的 src url

正则表达式:

String imgRegex = "<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>";

使用 imgregex 值获取位图图像。

于 2012-11-02T18:31:54.423 回答