Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从web获取第二个XML时出错_Android_Xml_Parsing - Fatal编程技术网

Android 从web获取第二个XML时出错

Android 从web获取第二个XML时出错,android,xml,parsing,Android,Xml,Parsing,我是android开发的新手,我正在尝试构建我的第一个应用程序,它会寻找一个在线生成的xml文件来显示信息。在第一个活动中,我创建了一个包含XML文件中所有条目的ListView,只要我单击一个条目,它就会传递id并转到第二个活动,该活动应该访问另一个XML文件并提供详细信息。但是,在尝试获取XML以获取详细信息时,我不断遇到此错误: java.lang.ClassCastException: org.apache.harmony.xml.dom.ElementImpl 有什么想法吗?怎么了?以

我是android开发的新手,我正在尝试构建我的第一个应用程序,它会寻找一个在线生成的xml文件来显示信息。在第一个活动中,我创建了一个包含XML文件中所有条目的ListView,只要我单击一个条目,它就会传递id并转到第二个活动,该活动应该访问另一个XML文件并提供详细信息。但是,在尝试获取XML以获取详细信息时,我不断遇到此错误:

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

有什么想法吗?怎么了?以下是“详细信息”活动的来源:

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;
   }
  }
}
package en.android.itleaked.com;
导入java.io.InputStream;
导入java.net.URL;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入org.w3c.dom.Document;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
导入org.xml.sax.InputSource;
导入android.app.Activity;
导入android.graphics.drawable.drawable;
导入android.os.Bundle;
导入android.sax.Element;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类showReleases扩展了活动{
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.releasedetails);
getFeed();
}
public-void-getFeed(){
Bundle extras=getIntent().getExtras();
试一试{
URL url2=新URL(“http://www.it-leaked.com/app/details.php?id=“+extras.getString(“id”);
DocumentBuilderFactory dbf2=DocumentBuilderFactory.newInstance();
DocumentBuilderDB2=dbf2.newDocumentBuilder();
Document doc2=db2.parse(新的InputSource(url2.openStream());
doc2.getDocumentElement().normalize();
NodeList nodeList2=doc2.getElementsByTagName(“项”);
String relTitle[]=新字符串[nodeList2.getLength()];
String relCover[]=新字符串[nodeList2.getLength()];
对于(int i=0;i
以下是带有附加id的XML的URL,您可以看到它的外观:

你知道怎么回事吗?顺便说一句,我在每个与XML解析/获取有关的变量中添加了数字2,只是为了确保与其他活动没有冲突,但我仍然得到相同的错误。。 我希望你能帮助我。 提前感谢

查看您的异常(即java.lang.ClassCastException),问题在于将某个类强制转换为另一个类

在您的代码中,我不理解将元素强制转换为Document-Element时使用getElementsByTagName方法的原因。看这里:

这是万恶之源。元素和文档都实现了节点接口,但文档不是实现元素——这就是元素不能转换为文档的原因

无论如何,表达式行号可以确定准确的错误位置。

查看您的异常(即java.lang.ClassCastException),问题在于将某个类强制转换为另一个类

在您的代码中,我不理解将元素强制转换为Document-Element时使用getElementsByTagName方法的原因。看这里:

这是万恶之源。元素和文档都实现了节点接口,但文档不是实现元素——这就是元素不能转换为文档的原因


无论如何,表达式行号可以确定确切的错误位置。

这个问题有点老了,但我相信ClassCastException是因为试图将节点列表中的元素强制转换为
android.sax.Element类型,而不是org.w3c.dom.Element检查导入。

这个问题有点老了,但我认为ClassCastException是因为试图将节点列表中的元素强制转换为
android.sax.Element类型,而不是org.w3c.dom.Element检查导入。

经验法则:始终向我们提供有关错误的最有用信息。在您的情况下,您没有向我们显示错误堆栈跟踪。你不认为我们更容易看到错误发生在哪里,发生在哪一行,而不是期望我们复制粘贴、编译和运行你的代码吗?嘿,首先感谢你的回复。我不太清楚你说的堆栈跟踪是什么意思。我尝试单击debug,但是eclipse控制台没有给我任何错误消息,我通过catch(异常e)获得了错误消息…非常感谢:始终为我们提供有关错误的最有用信息。在您的情况下,您没有向我们显示错误堆栈跟踪。你不认为我们更容易看到错误发生在哪里,发生在哪一行,而不是期望我们复制粘贴、编译并运行你的代码吗