从Rss获取图像 - 最好的方法吗?

时间:2011-12-24 13:14:30

标签: android rss

我从网站上获取Rss。在描述标签中有一个我想向用户显示的图像。我正在使用此代码来获取它:

public void setDescription(String description) {
        this.description = description;
        //parse description for any image or video links
        if (description.contains("<img style=")){
            String imgg  = description.substring(description.indexOf("<img style="));
            String cleanUp = imgg.substring(0, imgg.indexOf(">")+1);
            imgg = imgg.substring(imgg.indexOf("src=") + 5);
            int indexOf = imgg.indexOf("\"");
            if (indexOf==-1){
                indexOf = imgg.indexOf("\"");
            }
            imgg = imgg.substring(0, indexOf);

            setImgLink(imgg);

            this.description = this.description.replace(cleanUp, "");
        }   else{

            String imgg2="replace_image.png";
            setImgLink(imgg2);
        }

    }

我的问题是,如果我的rss网站改变了xml中的内容,我会得到我的替换图片。例如,如果img样式更改为图像src或类似的东西。

有没有办法解决它,每次从描述中获取图像? 我发现我可以使用这样的东西,但我无法使它工作http://developer.android.com/reference/android/text/Html.html

感谢:!)

1 个答案:

答案 0 :(得分:0)

而不是使用正则表达式更好地使用DOM和XPATH来提取图像源。这样即使HTML发生变化,您的解决方案仍然有效。

您似乎在description中有描述,并且您想要imgg中的图片路径。试试这个:

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(description);

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//img";
Node imgNode = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);

String imgg = imgNode.getAttribute("src");