Android 恢复xml文件的长度
我需要恢复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
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"));