Страница 1 из 1
Парсингу картинок в RSS
Добавлено: 22 июн 2013, 22:06
razmus
Доброе время суток Форумчане!
Подскажите, как можно парсить строку RSS вида
<media:thumbnail width="66" height="49" url="
http://news.bbcimg.co.uk/media/images/6 ... xry5vx.jpg"/>
И как ее адрес присвоить картинке в приложении. Использую SimpleAdaptor.
Заранее благодарен.
Re: Парсингу картинок в RSS
Добавлено: 23 июн 2013, 10:56
razmus
У меня не получается забрать адрес рисунка
http://news.bbcimg.co.uk/media/images/6 ... xry5vx.jpg
так как парсер тормозится на media: и ничего не возвращает.
Re: Парсингу картинок в RSS
Добавлено: 23 июн 2013, 11:41
rezak90
какой парсер используете?
как именно парсите? если dom парсером то нужно как атрибут, если sax то так же
Re: Парсингу картинок в RSS
Добавлено: 23 июн 2013, 12:15
razmus
Прикрепил файл проекта парсера
По пробовал сделать отдельно приложение для загрузки картинки, но почему-то тоже не работает.. подскажите что не так?
Код: Выделить всё
package com.example.im;
import java.io.InputStream;
import java.net.URL;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView txtUrl;
private ImageView imgView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url = "http://developer.alexanderklimov.ru/android/images/android_cat.jpg";
txtUrl = (TextView) findViewById(R.id.txtUrl);
txtUrl.setText(url);
imgView = (ImageView) findViewById(R.id.imgView);
// загружаем картинку с указанного адреса в ImageView
try {
imgView.setImageDrawable(grabImageFromUrl(url));
} catch (Exception e) {
txtUrl.setText("Ошибка: Exception");
}
}
private Drawable grabImageFromUrl(String url) throws Exception {
return Drawable.createFromStream(
(InputStream) new URL(url).getContent(), "src");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
З.Ы.
Пытаюсь парсить ленту ббс.
Re: Парсингу картинок в RSS
Добавлено: 23 июн 2013, 13:22
rezak90
По пробовал сделать отдельно приложение для загрузки картинки, но почему-то тоже не работает.. подскажите что не так?
этот код бред, вот так грузить картинку нужно:
Код: Выделить всё
URL url = new URL("http://developer.alexanderklimov.ru/android/images/android_cat.jpg");
Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
Пытаюсь парсить ленту ббс.
так вы содержимое тега media не получите, потому что он закрытый:
Код: Выделить всё
<media:thumbnail width="66" height="49" url="http://news.bbcimg.co.uk/media/images/68327000/jpg/_68327394_68322919.jpg"/>
как я говорил, нужно разобрать его и вытащить атрибуты:
Код: Выделить всё
Element e = (Element) nl.item(i); //получили тег media
String url = e.getAttribute("url"); //получили содержимое атрибута url
P.S: все запросы к сети делайте в отдельном потоке!
Re: Парсингу картинок в RSS
Добавлено: 23 июн 2013, 15:20
razmus
Спасибо, с обработкой рисунков заработало, но атрибут вытянуть все равно не удается. Я наверное не совсем понимаю, что делаю... добавил в парсер код с вытягиванием атрибута, последняя строчка кода. Подскажите пожалуйста еще.
З.Ы.
Я только недавно взялся за изучение андроид, так что с потоками у меня в ряд ли получится.
Код: Выделить всё
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
map.put(KEY_DATE, "Date: " + parser.getValue(e, KEY_DATE));
map.put(KEY_LINK, parser.getValue(e, KEY_LINK));
map.put(KEY_IMAGE = e.getAttribute("url"), parser.getValue(e, KEY_IMAGE));
Re: Парсингу картинок в RSS
Добавлено: 23 июн 2013, 15:30
rezak90
С потоками разбирайтесь сейчас, потому что Ваше приложение на 4-м Андроиде работать не будет.
Вот это не правильно:
Код: Выделить всё
map.put(KEY_IMAGE = e.getAttribute("url"), parser.getValue(e, KEY_IMAGE));
Вот это правильно:
Re: Парсингу картинок в RSS
Добавлено: 23 июн 2013, 15:42
razmus
Вывел содержимое в соответствующий текствиев, но он пустой. получается что юрл не забирается.
На всякий случай прикрепил еще раз файл проекта.
Re: Парсингу картинок в RSS
Добавлено: 23 июн 2013, 16:21
rezak90
Вы считываете только атрибуты первого уровня, а media:thumbnail находится на втором уровне, по этому нужно получить список второго уровня и уже у него искать media:thumbnail и вытаскивать атрибут url:
Код: Выделить всё
map.put(KEY_IMAGE, getMediaUrl(e));
//
private String getMediaUrl(Element element)
{
String sUrl = null;
NodeList nList = element.getChildNodes();
for (int i = 0; i < nList.getLength(); i++)
{
Node el = nList.item(i);
if (el.getNodeName() != null && el.getNodeName().equalsIgnoreCase("media:thumbnail"))
{
sUrl = el.getAttributes().getNamedItem("url").getNodeValue();
}
}
return sUrl;
}
P.S. но я бы рекомендовал использовать SAX парсер. При такой xml он будет быстрее работать, и кода меньше писать.
Re: Парсингу картинок в RSS
Добавлено: 23 июн 2013, 17:32
razmus
Большое спасибо, все заработало!!!
Re: Парсингу картинок в RSS
Добавлено: 15 окт 2014, 20:28
dimasta68
день добрый !!!
я новичок в андройд разработке пишу приложение которое парсит rss ленту с сайта
при компиляции проекта не отображаются картинки подскажите пожалуйста как это релизовать
Зарание спасибо