2012-02-19 8 views
0

OK, donc je suis en train d'analyser cette feed pour une application Android:Problème analyse syntaxique flux RSS pour Android

et je le fais avec ce code:

protected List<GamestarFeedItem> doInBackground(Context... params) { 
    context = params[0]; 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    List<GamestarFeedItem> items = new ArrayList<GamestarFeedItem>(); 
    test = new ArrayList<String>(); 
    try { 
     DocumentBuilder builder = factory.newDocumentBuilder(); 
     Document document = builder.parse(new URL("http://rss.feedsportal.com/c/370/f/5299/index.rss").openConnection().getInputStream()); 
     //Document document = builder.parse(new URL("http://www.gamestar.de/rss/gamestar.rss").openConnection().getInputStream()); 
     Element root = document.getDocumentElement(); 
     NodeList docItems = root.getElementsByTagName("item");   
     Node nodeItem; 

     for(int i = 0;i<docItems.getLength();i++){ 
      nodeItem = docItems.item(i); 

      if(nodeItem.getNodeType() == Node.ELEMENT_NODE){ 
       GamestarFeedItem feedItem = new GamestarFeedItem(); 
       NodeList element = nodeItem.getChildNodes();      
       feedItem.setTitle(element.item(0).getFirstChild().getNodeValue()); 
       feedItem.setSummary(element.item(2).getNodeValue()); 
       feedItem.setLink(element.item(1).getFirstChild().getNodeValue());     feedItem.setDate(element.item(3).getFirstChild().getNodeValue()); 
       //feedItem.setImage(element.getChild("")); 
       test.add(element.item(0).getFirstChild().getNodeValue()); 
       String aaa = element.item(2).getNodeName(); 
       items.add(feedItem); 
      } 
     } 
    } catch (ParserConfigurationException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SAXException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return items; 
} 

Maintenant, tout fonctionne à ce jour à droite, sauf que cette ligne:

feedItem.setSummary(element.item(2).getNodeValue()); 

retourne juste un < au lieu de la description, et avec cette ligne je sais que je suis en train d'extraire l'élément à droite:

String aaa = element.item(2).getNodeName(); 

Maintenant, voici un exemple d'une telle description:

< a href = "http://www.gamestar.de/news/vermischtes/2564931/gamepro_apps_fuer_ios_und_android.html" > < img align = "left" hspace = "5" src = "http://images.idgentertainment.de/images/idgwpgsgp/bdb/2275036/127x.jpg"/> </a > Nouvelles Aktuelle, Tests de Spiele, Previews und Releases pour Xbox 360, PlayStation 3 et Vita sowie Nintendo-Systeme auch unterwegs immer dabei: Ab jetzt sind kostenfreie GamePro-Apps dans Android Market et dans iTunes verfügbar. < img width = '1' height = '1' src = 'http://rss.feedsportal.com/c/370/f/5299/s/1cbb8bf0/mf.gif 'border =' 0 '/ > < div class =' ​​mf-viral' > < table border = '0' > <tr> < td valign = » milieu '> < un href = "http://share.feedsportal.com/viral/sendEmail.cfm?lang=de & title = GamePro-Applications + f% C3% BCr + iOS + und + Android + - + Auf + dem + Smartphone + mise à jour + in + der + Welt + der + Konsolen-Spiele & link = http% 3A% 2F% 2Fwww.gamestar.de% 2Fnews% 2Fvermischtes% 2F2564931% 2Fgamepro_apps_fuer_ios_und_android.html "target =" _ blank " > < img src = "http://rss.feedsportal.com/images/emailthis2.gif" border = "0"/> </a > </td > < td valign = 'central' >href = "http://www.feedsportal.com/viral/bookmark_de.cfm?title=GamePro-Apps+f%C3%BCr+iOS+und+ Android + - + Auf + dem + Smartphone + mise à jour + in + der + Welt + der + Konsolen-Spiele & link = http% 3A% 2F% 2Fwww.gamestar.de% 2Fnews% 2Fvermischtes% 2F2564931% 2Fgamepro_apps_fuer_ios_und_android.html "target =" _ blank » > < img src = "http://rss.feedsportal.com/images/bookmark.gif" border = "0"/ > </a > </td > </tr > </Table > </div > < br/> < br/> < a href = "http://da.feedsportal.com/r/126178574663/u/355/f/5299/c/370/s/1cbb8bf0/kg/300/a2.htm" > < img src = "http://da.feedsportal.com/r/126178574663/u/355/f/5299/c/370/s/1cbb8bf0/kg/300/a2.img" border = "0"/> </a > < img src = "http://da.feedsportal.com/r/126178574663/u/355/f/5299/c/370/s/1cbb8bf0/kg/300/a2t.img" border = "0"/>

Alors, quelqu'un peut-il aider?

Répondre

0

OK, j'ai trouvé la solution.

En raison du format de la « description », il se compose en fait de plusieurs éléments enfants, donc u extrayez ces Childs dans une Nodelist et boucle sur eux pour extraxt leur contenu et leur problème résolu

String bbb = new String(); 
    NodeList desc = element.item(2).getChildNodes(); 
    for(int j = 0;j<desc.getLength();j++){ 
     bbb += desc.item(j).getNodeValue(); 
    }