2014-04-25 91 views

回答

0

你应该使用xmlpullparser或SAX解析器或DOM解析器对XML的RSS提要解析 尝试这个例子

try { 
     URL url = new URL("http://news.yahoo.com/rss/entertainment"); 

     XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
     factory.setNamespaceAware(false); 
     XmlPullParser xpp = factory.newPullParser(); 

      // We will get the XML from an input stream 
     xpp.setInput(getInputStream(url), "UTF_8"); 

      /* We will parse the XML content looking for the "<title>" tag which appears inside the "<item>" tag. 
      * However, we should take in consideration that the rss feed name also is enclosed in a "<title>" tag. 
      * As we know, every feed begins with these lines: "<channel><title>Feed_Name</title>...." 
      * so we should skip the "<title>" tag which is a child of "<channel>" tag, 
      * and take in consideration only "<title>" tag which is a child of "<item>" 
      * 
      * In order to achieve this, we will make use of a boolean variable. 
      */ 
     boolean insideItem = false; 

      // Returns the type of current event: START_TAG, END_TAG, etc.. 
     int eventType = xpp.getEventType(); 
     while (eventType != XmlPullParser.END_DOCUMENT) { 
      if (eventType == XmlPullParser.START_TAG) { 

       if (xpp.getName().equalsIgnoreCase("item")) { 
        insideItem = true; 
       } else if (xpp.getName().equalsIgnoreCase("title")) { 
        if (insideItem) 
         headlines.add(xpp.nextText()); //extract the headline 
       } else if (xpp.getName().equalsIgnoreCase("link")) { 
        if (insideItem) 
         links.add(xpp.nextText()); //extract the link of article 
       } 
      }else if(eventType==XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("item")){ 
       insideItem=false; 
      } 

      eventType = xpp.next(); //move to next element 
     } 

    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (XmlPullParserException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


    public InputStream getInputStream(URL url) { 
     try { 
      return url.openConnection().getInputStream(); 
     } catch (IOException e) { 
      return null; 
     } 
    } 
+0

嘿,非常感谢...!有用。我能够提取所有数据项。但是我也需要提取“media:content”的属性作为“url”来显示新闻图片。多一点帮助PLZ ... :) – Rider

+0

你试过媒体内容的网址标签 – skyshine