Получить изображения из 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");