Страница 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));
Вот это правильно:

Код: Выделить всё

map.put(KEY_IMAGE, e.getAttribute("url"));

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 ленту с сайта
при компиляции проекта не отображаются картинки подскажите пожалуйста как это релизовать
Зарание спасибо :roll: