2011-03-25 2 views
1

RSS 피드를 파싱하려면 다음 코드를 사용하고 있습니다. 따옴표가 나타나면 작동하지 않습니다. 도와주세요.안드로이드 따옴표가 파싱되지 않습니다.

public static ArrayList<RssItem> getRssItems(String feedUrl) { 

     ArrayList<RssItem> rssItems = new ArrayList<RssItem>(); 

     try { 
      //open an URL connection make GET to the server and 
      //take xml RSS data 
      URL url = new URL(feedUrl); 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

      if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
       InputStream is = conn.getInputStream(); 

       //DocumentBuilderFactory, DocumentBuilder are used for 
       //xml parsing 
       DocumentBuilderFactory dbf = DocumentBuilderFactory 
         .newInstance(); 
       DocumentBuilder db = dbf.newDocumentBuilder(); 

       //using db (Document Builder) parse xml data and assign 
       //it to Element 
       Document document = db.parse(is); 
       Element element = document.getDocumentElement(); 

       //take rss nodes to NodeList 
       NodeList nodeList = element.getElementsByTagName("item"); 

       if (nodeList.getLength() > 0) { 
        for (int i = 0; i < nodeList.getLength(); i++) { 

         //take each entry (corresponds to <item></item> tags in 
         //xml data 

         Element entry = (Element) nodeList.item(i); 

         Element _titleE = (Element) entry.getElementsByTagName(
           "title").item(0); 
         Element _descriptionE = (Element) entry 
           .getElementsByTagName("description").item(0); 
         Element _pubDateE = (Element) entry 
           .getElementsByTagName("pubDate").item(0); 
         Element _linkE = (Element) entry.getElementsByTagName(
           "link").item(0); 

         String _title = _titleE.getFirstChild().getNodeValue(); 
         String _description = _descriptionE.getFirstChild().getNodeValue(); 
         Date _pubDate = new Date(_pubDateE.getFirstChild().getNodeValue()); 
         String _link = _linkE.getFirstChild().getNodeValue(); 

         //create RssItemObject and add it to the ArrayList 
         RssItem rssItem = new RssItem(_title, _description, 
           _pubDate, _link); 

         rssItems.add(rssItem); 
        } 
       } 

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

     return rssItems; 
    } 

답변

0

요소에 문자 노드가 하나만 있다고 가정합니다 (getFirstChild().getNodeValue()). 그것은 잘못된 가정입니다. 요소의 모든 하위 노드를 반복하고 텍스트 노드를 결합해야합니다.

+0

도자기. 예제 코드를 제공해 주시겠습니까? 부디. 나는 안드로이드를 처음 접한다. – Droidme

관련 문제