2011-01-05 10 views
0

android developmentに新規、imは情報を表示するためにオンラインで生成されたxmlファイルを探す最初のアプリケーションを作成しようとしています。最初のアクティビティでは、XMLファイルのすべてのエントリを含むリストビューを作成しました。エントリをクリックするとすぐに、IDを渡して詳細を含む別のXMLファイルにアクセスする第2アクティビティに進みます。Webから2番目のXMLを取得するときにエラーが発生しました

とjava.lang.ClassCastException: org.apache.harmony.xml.dom.ElementImpl

任意のアイデアをいただきました!間違っ詳細については、XMLを取得しようとしたときしかし、私はこのエラーを得続けます?ここで、「詳細」の活動のための源である:起こっていただきました http://www.it-leaked.com/app/details.php?id=50969

任意のアイデア:あなたはそれがどのように見えるかを見ることができるようにここで

package en.android.itleaked.com; 

import java.io.InputStream; 
import java.net.URL; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 

import org.w3c.dom.Document; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.xml.sax.InputSource; 

import android.app.Activity; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.sax.Element; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class showReleases extends Activity { 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.releasedetails); 

    getFeed(); 

} 


public void getFeed() { 
    Bundle extras = getIntent().getExtras(); 

    try { 
     URL url2 = new URL("http://www.it-leaked.com/app/details.php?id=" + extras.getString("id")); 
    DocumentBuilderFactory dbf2 = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db2 = dbf2.newDocumentBuilder(); 
    Document doc2 = db2.parse(new InputSource(url2.openStream())); 
    doc2.getDocumentElement().normalize(); 
    NodeList nodeList2 = doc2.getElementsByTagName("item"); 
    String relTitle[] = new String[nodeList2.getLength()]; 
    String relCover[] = new String[nodeList2.getLength()]; 
    for (int i = 0; i < nodeList2.getLength(); i++) { 
    Node node2 = nodeList2.item(i); 
    Element fstElmnt2 = (Element) node2; 
    NodeList nameList2 = ((Document) fstElmnt2).getElementsByTagName("title"); 
    Element nameElement2 = (Element) nameList2.item(0); 
    nameList2 = ((Node) nameElement2).getChildNodes(); 
    relTitle[i] = ((Node) nameList2.item(0)).getNodeValue(); 

    NodeList coverList2 = ((Document) fstElmnt2).getElementsByTagName("cover"); 
    Element coverElement2 = (Element) coverList2.item(0); 
    coverList2 = ((Node) coverElement2).getChildNodes(); 
    relCover[i] = ((Node) coverList2.item(0)).getNodeValue(); 
    } 
    TextView txtView = (TextView)findViewById(R.id.TextView01); 
    txtView.setText(relTitle[0]); 

     ImageView imgView =(ImageView)findViewById(R.id.ImageView01); 
    Drawable drawable = LoadImageFromWebOperations(relCover[0]); 
     imgView.setImageDrawable(drawable); 


    } 
    catch (Exception e) { 
    TextView txtView2 = (TextView)findViewById(R.id.TextView02); 
    txtView2.setText("Error: " + e); 
    } 

} 

    private Drawable LoadImageFromWebOperations(String url) 
    { 
    try 
    { 
    InputStream is = (InputStream) new URL(url).getContent(); 
    Drawable d = Drawable.createFromStream(is, "src name"); 
    return d; 
    }catch (Exception e) { 
    System.out.println("Exc="+e); 
    return null; 
    } 
    } 
} 

は、添付のIDを持つXMLのURLですか?ちなみに、XMLパース/フェッチと何か関係がある変数に2を追加して、他のアクティビティとの競合がないことを確認しましたが、同じエラーが表示されます。 私があなたを助けてくれることを願っていますでる。 ありがとうございます

+1

親指のルール:常にあなたのエラーに関する最も有用な情報を私たちに提供してください。あなたのケースでは、エラースタックトレースを表示していませんでした。私たちがあなたのコードをコピーして貼り付け、コンパイルして実行するのではなく、どこでエラーが発生したのか、どの行にあるのかがわかりやすいでしょうか? – darioo

+0

ねえ、まずはお返事ありがとうございます。私はスタックトレースとは何を意味するのかよく分かりません。私はデバッグをクリックしようとしましたが、Eclipseのコンソールは私にエラーメッセージを与えていません、私はcatch(Exception e)を介してエラーメッセージを受け取りました..ありがとう – robs

答えて

0

あなたの例外(java.lang.ClassCastException)を見ると、あるクラスを別のクラスにキャスティングする際に問題があります。

あなたのコードでは、ElementをDocument - Elementにキャストする理由がわかりませんでした。使用しているgetElementsByTagNameメソッドがあります。ここを見てください:http://developer.android.com/reference/org/w3c/dom/Element.html

すべての悪の根です。 ElementとDocumentの両方がNodeインターフェイスを実装していますが、Documentは実装されていませんElement - ElementをDocumentにキャストすることができない理由です。

とにかく、expcetion行番号で正確なエラー位置を特定できます。

4

この質問は少し古いですが、私はClassCastExceptionがノードリストの要素をandroid.sax.Element type rather than org.w3c.dom.Element;にキャストしようとしていると考えています。

関連する問題