2012-02-19 73 views
0

OK RSS提要,所以我试图解析这feed一个Android应用程序:故障解析为Android

,我用这个代码做:

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

现在,到目前为止的所有作品不错,只不过这条线:

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

刚刚返回<,而不是描述,以及与此行中我知道,我试图提取合适的元素:

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

现在,这里是这样的描述的一个例子:

< A HREF = “http://www.gamestar.de/news/vermischtes/2564931/gamepro_apps_fuer_ios_und_android.html” > < IMG “”hspace =“5”src =“http://images.idgentertainment.de/images/idgwpgsgp/bdb/2275036/127x.jpg”/ > </a > Aktuelle News,Spiele-Tests,Previews und发布Xbox 360,PlayStation 3和Vita Sowie任天堂系统更新版本:Android版本中的GamePro应用程序和iTunes版本中的GamePro应用程序。 < IMG WIDTH = '1' 的高度= '1' 的src = 'http://rss.feedsportal.com/c/370/f/5299/s/1cbb8bf0/mf.gif '的边界=' 0 '/ > < DIV类=' MF-病毒' > <表边界= '0' > <TR> < TD VALIGN =”中间'> < a href =“http://share.feedsportal.com/viral/sendEmail.cfm?lang=de & title = GamePro-Apps + f%C3%BCr + iOS + und + Android + - + Auf + dem +智能手机+最新版本+ + + + + + + + + + + + + + + + + + + + + + > < img src =“http://rss.feedsportal.com/images/emailthis2.gif”border =“0”/ > </a > </td > < td valign ='middle'> < a href =“http://res.feedsportal.com/viral/bookmark_de.cfm?title=GamePro-Apps+f%C3%BCr+iOS+und+ Android + - + Auf + dem +智能手机+最新+ + + + + + + + + + + + + + + + + + + + “目标=” _空白” > < IMG SRC = “http://rss.feedsportal.com/images/bookmark.gif” BORDER = “0”/ > < /一个> </TD > </TR > < /表> </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”/>

那么,任何人都可以帮忙吗?

回答

0

好的,我找到了解决方案。

由于“说明”的格式,它实际上是由多个子项的,所以你刚刚提取那些孩子的入节点列表和循环在他们extraxt的内容和问题解决

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