2012-05-04 23 views
1

私はこのRSSフィードを解析するために、AndroidのXML解析ヘルパー(android.util.Xml.parse(InputStream, Encoding, ContentHandler)を使用しています:http://www.rssweather.com/wx/nz/christchurch/rss.php。取得しようとしているデータが入っているcontent:encodedタグを認識していないようです。ここではXMLの構造は次のとおりです。Android XML.parse()コンテンツが見つかりません:エンコードされたタグ

<rss> 
    <channel> 
     <item> 
      <title>...</title> 
      <pubDate>...</pubDate> 
      // Other tags 
      <content:encoded> 
       <![CDATA[ 
        (.... this is what I want to retrieve ...) 
       ]]> 
      </content:encoded> 
     </item> 
    </channel> 
</rsss> 

これは私のコードです:私が間違っている

void parse(){ 
    RootElement root = new RootElement("rss"); 
    Element channel = root.getChild("channel"); 
    Element item = channel.getChild("item"); 
    Element contentEncoded = item.getChild("content", "encoded"); 
    // Have also tried these two: 
    Element encoded = item.getChild("encoded"); 
    Element content = item.getChild("content"); 

    contentEncoded.setEndTextElementListener(new EndTextElementListener() { 
     public void end(String body) { 
      Log.d("Test", "Content found: " + body); 
     } 
    }); 


    try { 
     Xml.parse(feedUrl.openConnection().getInputStream(), 
       Xml.Encoding.UTF_8, root.getContentHandler()); 
    } catch (Exception e){ 
     throw new RuntimeException(e); 
    } 
} 

? :)私は<item>要素から、タイトルやpubDateなどの他のデータを問題なく取り出すことができます。唯一のコンテンツです:エンコードされたものです。

+1

スティーブその問題... http://stackoverflow.com/questions/8193414/parsing-cdata-in-android –

+0

ああ、面白そうです。私は読んで行き、それが問題を沸騰させるかどうかを見るでしょう。ありがとう –

答えて

3

あなたのAndroid Sax Parserを使うことができます。私はコンテンツネームスペースと "エンコードされた"要素を使用するのと同じ問題とソリューションに直面しました。

あなたはRSS要素内のコンテンツの名前空間を見つけます!

<rss version="2.0" 
    xmlns:content="http://purl.org/rss/1.0/modules/content/" ... > 

だから要素は次のようになります取得:原因<[CDATA [ ``に

item.getChild("http://purl.org/rss/1.0/modules/content/", "encoded"); 
+0

早速あなたの答えが見えないのは残念です。私は数ヶ月前にその特定のプロジェクトを終えました。私はちょうど同様の問題を抱えているところに戻ってきて、それを機能させる別の試みをすることに決めました。これは正しい解決策です。 (私はxmlns:ページの上部にあるコンテンツに気付かなかったので馬鹿だと感じる!) –

+0

あなたは人生節約マーチンです.... –

0

... "content:encoded"は要素の有効な名前ではないと思います。 "content"が名前空間であり、この名前空間の要素を "コード化"しているのは有効です。

+0

残念ながら、それはRSSフィードが私に与えるものなので、私はそれに関係なく作業しなければなりません。しかし、コードが示しているように、私は名前空間 "content"と要素 "encoded"を成功させることなくそれを検索しようとしました。私はこれは私の答えでリンクされているDOMメソッドが正常に動作するので、これはAndroidのSAX解析ヘルパークラスの特定の問題だと考えています。 –

関連する問題