2012-04-26 24 views
0

これは私のRSSファイルです。そこからデータを抽出します。私はSAXパーサーで全部の作業をしましたが、うまく動作します。しかし、私はRSSファイル全体を解析し、それぞれの要素のデータを取得しました。Rss解析の問題(XML)

しかし、私の問題は、私は全体のファイル要素のデータを取得していますが、私は唯一の要素だけが欲しいです。

<rss version="2.0"> 
<channel> 
<title>RSS Feed</title> 
<link>http://www.xyz.com</link> 
<description>Calendar RSS Feeds</description> 
<language>en-us</language> 
<ttl>60</ttl> 
<item> 
<title> 
title 1 
</title> 
<description>description 1</description> 
<link> 
http://www.xyz.com 
</link> 
<guid isPermaLink="false">[email protected]://www.xyz.com</guid> 
</item> 
<item> 
<title> 
title 2 
</title> 
<description>description 2</description> 
<link> 
http://www.xyz.com 
</link> 
<guid isPermaLink="false">[email protected]://www.xyz.com</guid> 
</item> 
<item> 
</channel> 
</rss> 

私は私は私のコードを紹介し、これを設定するには、すべての組み合わせを試してみましたが、ここで私はのstartElementと するendElementメソッドを作った: -

public void startElement(String uri, String localName, String qName, 
      Attributes attributes) throws SAXException { 
     // TODO Auto-generated method stub 

     current = true; 

     if (localName.equals("channel")) 
     { 
      itemList = new ItemList(); 
     } 
    } 

    @Override 
    public void endElement(String uri, String localName, String qName) 
      throws SAXException { 
     // TODO Auto-generated method stub 
     current = false; 

     if(localName.equals("title")) 
     { 
      itemList.setTitle(currentValue); 
     } 

    } 

    @Override 
    public void characters(char[] ch, int start, int length) 
      throws SAXException { 
     // TODO Auto-generated method stub 

     if(current) 
     { 
      currentValue = new String(ch, start, length); 
      current=false; 
     } 
    } 

いずれ私はretriveすることができますどのように私を提案してください要素の下にある要素。

また、私はこれを試してみましたが、これは私が事前に

public void startElement(String uri, String localName, String qName, 
      Attributes attributes) throws SAXException { 
     // TODO Auto-generated method stub 

     current = true; 

     if (localName.equals("channel")) 
     { 
      if (localName.equals("item")) 
      { 
      itemList = new ItemList(); 
      } 
     } 
    } 

感謝をエラー与えます。

答えて

0

「私はすでに私はこのから生じ得たこのDocumentBuilderのを試してみましたが、これで私はドンためにStringBufferを実装する方法がわからない

url = new URL("http://www.abcd.com/rss.xml");//....... 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

    if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){ 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc; 
      doc = db.parse(url.openStream()); 
      doc.getDocumentElement().normalize(); 
      NodeList itemLst = doc.getElementsByTagName("item"); 



      Array.Description = new String[itemLst.getLength()];//........ 
      Array.Title = new String[itemLst.getLength()]; 
      Array.image = new String[itemLst.getLength()]; 
      Array.Date = new String[itemLst.getLength()]; 

      for(int i=0; i < itemLst.getLength(); i++){ 

       Node item = itemLst.item(i); 
       if(item.getNodeType() == Node.ELEMENT_NODE){ 
         Element ielem = (Element)item; 
         NodeList title = ielem.getElementsByTagName("title"); 
         NodeList date = ielem.getElementsByTagName("pubDate"); 

         NodeList description = ielem.getElementsByTagName("description"); 

        ////......... 
         Array.Title[i] = title.item(0).getChildNodes().item(0).getNodeValue(); 
         Array.Description[i] = description.item(0).getChildNodes().item(0).getNodeValue(); 
         Array.Date[i] = date.item(0).getChildNodes().item(0).getNodeValue(); 
+0

....それが役立つウィル願って、これを試してみてくださいDocumentBuiderで完全なデータを取得する。 DocumentBuilderでStringBufferを実装する方法を提案できますか?ありがとうございます。 – user755278

+0

k ... RSSリーダーを作成しました。私は解析に使用したファイル全体を投稿します。ちょっと確認してください... –

0
public class headlinesparser { 


public static void parse(){ 
URL url; 
try { 
    url = new URL("http://www.abcd.com/taxonomy/term/19/rss.xml");//....... 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

    if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){ 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc; 
      doc = db.parse(url.openStream()); 
      doc.getDocumentElement().normalize(); 
      NodeList itemLst = doc.getElementsByTagName("item"); 



      Headlines.Description = new String[itemLst.getLength()];//........ 
      Headlines.Title = new String[itemLst.getLength()]; 
      Headlines.image = new String[itemLst.getLength()]; 
      Headlines.Date = new String[itemLst.getLength()]; 

      for(int i=0; i < itemLst.getLength(); i++){ 

       Node item = itemLst.item(i); 
       if(item.getNodeType() == Node.ELEMENT_NODE){ 
         Element ielem = (Element)item; 
         NodeList title = ielem.getElementsByTagName("title"); 
         NodeList date = ielem.getElementsByTagName("pubDate"); 

         NodeList description = ielem.getElementsByTagName("description"); 

        ////......... 
         Headlines.Title[i] = title.item(0).getChildNodes().item(0).getNodeValue(); 
         Headlines.Description[i] = description.item(0).getChildNodes().item(0).getNodeValue(); 
         Headlines.Date[i] = date.item(0).getChildNodes().item(0).getNodeValue(); 

        if (Headlines.Description[i].contains("<img ")){ 

        String img = Headlines.Description[i].substring(Headlines.Description[i].indexOf("<img ")); 
        String cleanUp = img.substring(0, img.indexOf(">")+1); 
        img = img.substring(img.indexOf("src=") + 5); 
        int indexOf = img.indexOf("'"); 
        if (indexOf==-1){ 
         indexOf = img.indexOf("\""); 
        } 
        img = img.substring(0, indexOf); 

        //setImgLink(img); 

        Headlines.image[i]=img; 

         } 




       } 

      } 

    } 

} catch (MalformedURLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (DOMException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (ParserConfigurationException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (SAXException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

} 


}