Saltar para conteúdo


Foto
- - - - -

Listar Feed

rss feed xml

  • Por favor inicie sessão para responder
5 respostas a este tópico

#1 Galaxy

Galaxy

    Membro

  • Membros
  • PipPip
  • 66 mensagens

Mensagem publicada 22 July 2012 - 18:58

Boas Pessoal,
estou a tentar fazer uma aplicação para aceder a um feed e listar a informação lá contida.
Neste momento, consigo aceder ao feed e listar a informação inicial, que esta neste meu esquema abaixo, até às reticencias
<chanel>
<title></title>
<link></link>
........
<image></image>
<item></item>
<item></item
......
</chanel

o fedd é http://feeds.jn.pt/JN-GENTE, e como podem verificar as noticias estão todas dentro do tag item, onde eu não consigo aceder.

Abaixo segue o código que faz a ligação, e que lista a informação.
Tem também uns logs, um pouco estupidos :) mas que servem para eu tentar perceber o andamento da coisa.

Alguém pode ajudar?
Obrigado.

try {
		 URL url = new URL("[url="http://feeds.jn.pt/JN-GENTE"]http://feeds.jn.pt/JN-GENTE[/url]");	
		
		 XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
		  factory.setNamespaceAware(false);
		  XmlPullParser xpp = factory.newPullParser();
		  
		  xpp.setInput(url.openConnection().getInputStream(), null);
		  boolean insideItem = false;
		  
		  int eventType= xpp.getEventType();
		  
		   Log.d("teste", "chegou ao while");
			
		  int xpto = 0;	
		  
		  while ((eventType != XmlPullParser.END_DOCUMENT)  ) {
			Log.d("teste", "dentro do while");
		  
			if(eventType == XmlPullParser.START_TAG) {
			 Log.d("teste", " XmlPullParser.START_TAG");
			
			if (xpp.getName().equalsIgnoreCase("item")) {
		 	insideItem= true;
		 	 Log.d("item", "dentro do item");
		 	
		 	
	  } else if (xpp.getName().equalsIgnoreCase("title")) {
	   if (insideItem)
		headlines.add(xpp.nextText());
		
		Log.d("title", xpp.nextText());
		Log.d("title","" + xpp.nextTag());
	  
	  
	  } else if (xpp.getName().equalsIgnoreCase("link")) {
	   if(insideItem)
		links.add(xpp.nextText());
		Log.d("link", "link: " + xpp.nextText());
	  
	  } else if (xpp.getName().equalsIgnoreCase("description")) {
	   if (insideItem)
		links.add(xpp.nextText());
   	   Log.d("description", "descrição:" + xpp.nextText());   	  
   	 }
			
		   }
			
	  else if (eventType==XmlPullParser.END_TAG ) {
	   insideItem=false;
	   Log.d("teste", "end_tag");
	  
	  }
			
			eventType=xpp.next();
			Log.d("teste", "passa para o proximo. xpto=" + xpto);
			xpto++;
		   }

Editado por Galaxy, 22 July 2012 - 20:01.


#2 r3pek

r3pek

    Guru de Android

  • Former Staff
  • PipPipPipPipPip
  • 1560 mensagens
  • LocalizaçãoBA4 - Terceira - Açores
  • Nexus One + Motorola XOOM

Mensagem publicada 22 July 2012 - 19:43

Ajudar em quê? ;)

EDIT: É verdade, existem umas tags de "código" para formatar os posts para serem mais legiveis. Tipo assim:
public class Main {
    public void main(int arc, String[] argv) {
        return;
    }
}


#3 Galaxy

Galaxy

    Membro

  • Membros
  • PipPip
  • 66 mensagens

Mensagem publicada 22 July 2012 - 20:04

Boas,
em relação ao código do post, já o editei ;) obrigado pela dica.

O meu problema, e onde preciso de ajuda, é conseguir listar todos os itens daquele feed.
Já experimentei com outros feed, mas o problema é sempre o mesmo.

Listo o conteudo dos primeiros itens, mas nas tags que contenham outras tags dentro, não consigo listar.
Alguma ideia de qual o problema?

#4 r3pek

r3pek

    Guru de Android

  • Former Staff
  • PipPipPipPipPip
  • 1560 mensagens
  • LocalizaçãoBA4 - Terceira - Açores
  • Nexus One + Motorola XOOM

Mensagem publicada 22 July 2012 - 23:00

Pelo código, a variável insideItem só é true quando estás dentro dum "Item"

if (xpp.getName().equalsIgnoreCase("item")) {
insideItem= true;
Portanto até me admiro que funcione para o resto :P

Vê aqui um exemplo de como faço parse dum XML:
http://code.r3pek.or...serHandler.java

#5 Galaxy

Galaxy

    Membro

  • Membros
  • PipPip
  • 66 mensagens

Mensagem publicada 23 July 2012 - 08:44

Obrigado r3pek.
Agora com a semana de trabalho é dificil testar, mas assim que tenha um tempo livre já vejo isso.
Depois digo se resultou.
Obrigado.

#6 Galaxy

Galaxy

    Membro

  • Membros
  • PipPip
  • 66 mensagens

Mensagem publicada 26 July 2012 - 08:20

Boas, problema resolvido.
Tive de alterar a variavel insideItem, tal como disseste. Obrigado.





Também marcado com uma ou mais destas tags: rss, feed, xml