Получить изображения из 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 меняется на image src или что-то вроде этого.

Есть ли способ исправить это и получать каждый раз изображения из описания?? Я обнаружил, что могу использовать что-то подобное, но не могу заставить его работать http://developer.android.com/reference/android/text/Html.html

Спасибо!:)

1 ответ

Решение

Вместо использования регулярных выражений лучше использовать 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");
Другие вопросы по тегам