Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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 恢复xml文件的长度_Android_Xml Parsing - Fatal编程技术网

Android 恢复xml文件的长度

Android 恢复xml文件的长度,android,xml-parsing,Android,Xml Parsing,我需要恢复xml文件的长度。我已经更改了密码,我需要帮助。真烦人 try { /** Handling XML */ SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); /** Send URL to parse XML

我需要恢复xml文件的长度。我已经更改了密码,我需要帮助。真烦人

try {

        /** Handling XML */
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();

        /** Send URL to parse XML Tags */
        URL sourceUrl = new URL("http://sociable.co/wp-content/uploads/2011/04/android-wallpaper.png");
        URLConnection urlConnection = sourceUrl.openConnection();
        urlConnection.connect();
        int file_size = urlConnection.getContentLength();
        Log.v("the size of this file is : ", ""+file_size);

        /** Create handler to handle XML Tags ( extends DefaultHandler ) */
        MyXMLHandler myXMLHandler = new MyXMLHandler();
        xr.setContentHandler(myXMLHandler);
        xr.parse(new InputSource(sourceUrl.openStream()));

    } catch (Exception e) {
        System.out.println("XML Pasing Excpetion = " + e);
    }

但是当我使用
log.v
时,logCat中没有显示任何内容。如何解决此问题?

我认为这行不正确:
((文件)xr)
。。。如果您这样做会怎么样:

sourceUrl.connect();
long length = sourceUrl.getContentLength();

我认为问题在于您试图解析一个文件

编辑
:查看文件下载是否正确

   void downloadXMLFile(String fileUrl){
              URL myFileUrl = null;
              try {

               myFileUrl= new URL(fileUrl);
              } catch (MalformedURLException e) {

               // TODO Auto-generated catch block
               e.printStackTrace();
          }

          try {

               HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
               conn.setDoInput(true);
               conn.connect();
               int length = conn.getContentLength();
               InputStream is = conn.getInputStream();
          } catch (IOException e) {

               // TODO Auto-generated catch block
               e.printStackTrace();
          }
     }
}

不能将XMLReader强制转换为文件。你得到一个ClassCastException。你应该在日志中看到这一点。Christian是对的(除了方法是
openConnection()
而不是
connect()

替换

long filesize = ((File) xr).length();

我刚刚试过,效果不错

试试这个:

long contentLength = Long.parseLong(httpconn.getHeaderField("Content-Length"));

我编辑了你的问题,将“恢复”改为“恢复”;我想这就是你的意思。我建议添加一个标记来指示这是什么语言。我不这么认为,因为我尝试使用xml文件,长度始终为0I始终为0,我只添加这一行来查看结果:int fileSizeInKB=filesize/1024;Log.v(“长度:”,“”+文件大小);嘿,马克,我试过了,但没有结果。确保你有一个实际的文件,例如,将你的URL指向任何现有的XML文件,如
http://stackoverflow.com/feeds/tag/android
。您可能还希望使用调试器逐步完成代码。只是为了100%确定。。。您有internet权限,对吗?这意味着服务器可能没有返回标头中的长度。。。你查过了吗?刚查过。服务器正在返回长度为498565的标头,所以我不确定为什么它会向您返回-1。对不起,克里斯蒂安,但长度总是498565,这让我很恼火,我不明白原因。它可能是长度的默认值
long contentLength = Long.parseLong(httpconn.getHeaderField("Content-Length"));