2012-02-13 8 views
0

Je travaille sur une application Android dans laquelle je dois récupérer des données à partir d'un flux RSS, je suis capable de lire le titre, le lien et le problème face à la description. si elle est dans ce formatComment lire les flux RSS de l'URL rss?

<description>  
    worsening of developments in...... 
</description> 

je suis en mesure de le lire, mais dans certains flux rss ayant ce format aussi

<description> 
    <p><a href="http://news.yahoo.com/ap-sources 
</description> 

je ne reçois pas ce texte .. c'est le flux Rss url: http://news.yahoo.com/rss/politics.

lire cette description ..

+0

j'ai analyseur pour supprimer cette balise, mais êtes-vous sûr comme première description .. Mitt Romney et son sous-financement Les opposants profitent d'une pause d'une semaine dans la course à la nomination présidentielle républicaine - aucun débat ou primaire n'est prévu - pour lever l'argent nécessaire pour mener à bien les stratégies du Super Tuesday et rivaliser dans les États au-delà. –

+0

oui c'est la description. Je veux obtenir cette chaîne en même temps si la description en format normal je veux l'obtenir aussi .. –

+0

voir ma réponse et il a deux classe (HTMLRemoverParser, HTMLRemoverBean) classe pour l'article et l'analyse. dans java.Cheers !!! –

Répondre

2
package com.samir.XMLParser; 

import java.io.*; 
import java.net.*; 
import java.util.*; 
import javax.xml.parsers.*; 
import org.w3c.dom.*; 

public class HTMLRemoverParser { 

    HTMLRemoverBean objBean; 
    Vector<HTMLRemoverBean> vectParse; 

    int mediaThumbnailCount; 
    boolean urlflag; 
    int count = 0; 

    public HTMLRemoverParser() { 
     try { 

      vectParse = new Vector<HTMLRemoverBean>(); 
      URL url = new URL("http://news.yahoo.com/rss/politics"); 
      URLConnection con = url.openConnection(); 

      System.out.println("Connection is : " + con); 

      BufferedReader reader = new BufferedReader(new InputStreamReader(
        con.getInputStream())); 
      System.out.println("Reader :" + reader); 

      String inputLine; 
      String fullStr = ""; 
      while ((inputLine = reader.readLine()) != null) 
       fullStr = fullStr.concat(inputLine + "\n"); 

      InputStream istream = url.openStream(); 

      DocumentBuilder builder = DocumentBuilderFactory.newInstance() 
        .newDocumentBuilder(); 

      Document doc = builder.parse(istream); 

      doc.getDocumentElement().normalize(); 


      NodeList nList = doc.getElementsByTagName("item"); 

      System.out.println(); 

      for (int temp = 0; temp < nList.getLength(); temp++) { 

       Node nNode = nList.item(temp); 
       if (nNode.getNodeType() == Node.ELEMENT_NODE) { 

        Element eElement = (Element) nNode; 

        objBean = new HTMLRemoverBean(); 
        vectParse.add(objBean); 

        objBean.title = getTagValue("title", eElement); 
        objBean.description = getTagValue("description", eElement); 
        String noHTMLString = objBean.description.replaceAll("\\<.*?\\>", ""); 
        objBean.description=noHTMLString; 
        objBean.link = getTagValue("link", eElement); 
        objBean.pubdate = getTagValue("pubDate", eElement); 

       } 
      } 

      for (int index1 = 0; index1 < vectParse.size(); index1++) { 
       HTMLRemoverBean ObjNB = (HTMLRemoverBean) vectParse 
         .get(index1); 

       System.out.println("Item No : " + index1); 
       System.out.println(); 

       System.out.println("Title is : " + ObjNB.title); 
       System.out.println("Description is : " + ObjNB.description); 
       System.out.println("Link is : " + ObjNB.link); 
       System.out.println("Pubdate is : " + ObjNB.pubdate); 

       System.out.println(); 
       System.out 
         .println("-------------------------------------------------------------------------------------------------------------"); 

      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private String getTagValue(String sTag, Element eElement) { 
     NodeList nlList = eElement.getElementsByTagName(sTag).item(0) 
       .getChildNodes(); 

     Node nValue = (Node) nlList.item(0); 

     return nValue.getNodeValue(); 

    } 

    public static void main(String[] args) { 
     new HTMLRemoverParser(); 
    } 

} 

Et Bean est ::

package com.samir.XMLParser; 

public class HTMLRemoverBean { 

    public String title; 
    public String description; 
    public String link; 
    public String pubdate; 

} 
+0

en utilisant cette classe, je suis capable de lire toutes les choses .. –

+0

est bien dans deux classes? –

+0

oui j'utilise ces deux classes, maintenant j'essaye d'afficher ces articles dans la vue de liste. –

1

Lorsque vous détectez que le bloc de texte est HTML, ouvrez-le dans un WebView au lieu d'un TextView. Ma solution ressemble à ceci:

WebView wv = (WebView) v.findViewById(R.id.feed_entry_detail); 
wv.loadData(mContentFromFeed, "text/html; charset=utf-8", null); 
+0

Je dois utiliser textview seulement parce que je suis capable d'afficher des informations sur les éléments dans la vue liste .. –