Парсингу картинок в RSS

Ваши предложения по развитию форума и вопросы по его функционалу
Ответить
razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

Парсингу картинок в RSS

Сообщение razmus » 22 июн 2013, 22:06

Доброе время суток Форумчане!
Подскажите, как можно парсить строку RSS вида
<media:thumbnail width="66" height="49" url="http://news.bbcimg.co.uk/media/images/6 ... xry5vx.jpg"/>

И как ее адрес присвоить картинке в приложении. Использую SimpleAdaptor.
Заранее благодарен.

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

Re: Парсингу картинок в RSS

Сообщение razmus » 23 июн 2013, 10:56

У меня не получается забрать адрес рисунка http://news.bbcimg.co.uk/media/images/6 ... xry5vx.jpg
так как парсер тормозится на media: и ничего не возвращает.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Парсингу картинок в RSS

Сообщение rezak90 » 23 июн 2013, 11:41

какой парсер используете?
как именно парсите? если dom парсером то нужно как атрибут, если sax то так же
R.id.team
Политика на форуме запрещена

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

Re: Парсингу картинок в RSS

Сообщение razmus » 23 июн 2013, 12:15

Прикрепил файл проекта парсера

По пробовал сделать отдельно приложение для загрузки картинки, но почему-то тоже не работает.. подскажите что не так?

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

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;
	}

}
З.Ы.
Пытаюсь парсить ленту ббс.
Вложения
AndroidXMLParsing.rar
(144.52 КБ) 148 скачиваний

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Парсингу картинок в RSS

Сообщение rezak90 » 23 июн 2013, 13:22

По пробовал сделать отдельно приложение для загрузки картинки, но почему-то тоже не работает.. подскажите что не так?
этот код бред, вот так грузить картинку нужно:

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

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: все запросы к сети делайте в отдельном потоке!
R.id.team
Политика на форуме запрещена

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

Re: Парсингу картинок в RSS

Сообщение razmus » 23 июн 2013, 15:20

Спасибо, с обработкой рисунков заработало, но атрибут вытянуть все равно не удается. Я наверное не совсем понимаю, что делаю... добавил в парсер код с вытягиванием атрибута, последняя строчка кода. Подскажите пожалуйста еще.

З.Ы.
Я только недавно взялся за изучение андроид, так что с потоками у меня в ряд ли получится.

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

		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));

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Парсингу картинок в RSS

Сообщение rezak90 » 23 июн 2013, 15:30

С потоками разбирайтесь сейчас, потому что Ваше приложение на 4-м Андроиде работать не будет.
Вот это не правильно:

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

map.put(KEY_IMAGE = e.getAttribute("url"), parser.getValue(e, KEY_IMAGE));
Вот это правильно:

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

map.put(KEY_IMAGE, e.getAttribute("url"));
R.id.team
Политика на форуме запрещена

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

Re: Парсингу картинок в RSS

Сообщение razmus » 23 июн 2013, 15:42

Вывел содержимое в соответствующий текствиев, но он пустой. получается что юрл не забирается.

На всякий случай прикрепил еще раз файл проекта.
Вложения
AndroidXMLParsing.rar
(122.01 КБ) 142 скачивания

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Парсингу картинок в RSS

Сообщение rezak90 » 23 июн 2013, 16:21

Вы считываете только атрибуты первого уровня, а 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 он будет быстрее работать, и кода меньше писать.
R.id.team
Политика на форуме запрещена

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

Re: Парсингу картинок в RSS

Сообщение razmus » 23 июн 2013, 17:32

Большое спасибо, все заработало!!!

dimasta68
Сообщения: 5
Зарегистрирован: 15 окт 2014, 20:15

Re: Парсингу картинок в RSS

Сообщение dimasta68 » 15 окт 2014, 20:28

день добрый !!!
я новичок в андройд разработке пишу приложение которое парсит rss ленту с сайта
при компиляции проекта не отображаются картинки подскажите пожалуйста как это релизовать
Зарание спасибо :roll:
Вложения
anddev_v_2.zip
(11.15 КБ) 96 скачиваний

Ответить