我的目标是从 url 下载 xml 文件并解析它。为了进行实验,我使用下一个 xml 文件: https://www.dropbox.com/s/l5qtpcrryuistpk/Adtest.xml
<?xml version="1.0" encoding="UTF-8">
<adsettings>
<adnetwork>AdMob</adnetwork>
<publisherid>12345</publisherid>
</adsettings>
首先,我使用以下代码下载它:
URL xmlUrl = new URL(XML_SETTINGS_URL);
HttpURLConnection urlConnection = (HttpURLConnection) xmlUrl.openConnection();
urlConnection.connect();
FileOutputStream fileOutputStream = adContext.openFileOutput(SETTINGS_FILENAME,
adContext.MODE_PRIVATE);
InputStream stream = urlConnection.getInputStream();
byte[] buffer = new byte[1024];
while (stream.read(buffer) > -1) {
fileOutputStream.write(buffer);
}
fileOutputStream.close();
urlConnection.disconnect();
接下来,我尝试解析它:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
File file = adContext.getFileStreamPath(SETTINGS_FILENAME);
FileReader fileReader = new FileReader(file);
System.out.println(fileReader);
parser.setInput(fileReader);
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
Log.d(TAG, "Start document");
} else if(eventType == XmlPullParser.START_TAG) {
Log.d(TAG, "Start tag "+parser.getName());
} else if(eventType == XmlPullParser.END_TAG) {
Log.d(TAG, "End tag "+parser.getName());
} else if(eventType == XmlPullParser.TEXT) {
Log.d(TAG, "Text "+parser.getText());
}
eventType = parser.next();
}
因此,我只收到 Start 文档、html、head 和 script,然后是异常:
org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT @13:51 in java.io.FileReader@4287eae8)
有什么想法可以解决吗?预先感谢您
最佳答案
我只是在评论中回答了这个问题,所以这里是正确的真正答案,这样你的问题就可以得到解决!
如何强制从 Dropbox 下载文件?
您可以对 Dropbox 链接 URL 进行一些简单的修改,以确保浏览器按照您想要的方式处理您的 Dropbox 链接。
在浏览器中渲染文件
大多数现代网络浏览器可以自动检测、打开和以其他方式处理许多文件类型。例如,单击浏览器中的图像链接通常会在浏览器中打开图像,而不是将其下载到桌面。
To bypass the preview page and allow your browser to handle your files, replace www with dl and dropbox with dropboxusercontent in your URL. For example:
https://www.dropbox.com/s/xttkmuvu7hh72vu/MyFile.pdf
变成:
https://dl.dropboxusercontent.com/s/xttkmuvu7hh72vu/MyFile.pdf
强制下载文件或文件夹
使用上面的新直接链接,您可以进一步修改 URL 以强制浏览器下载文件,而不是在 native 处理它。要强制下载文件,请附加带有 ?dl=1 的直接链接。例如:
https://dl.dropboxusercontent.com/s/xttkmuvu7hh72vu/MyFile.pdf
(请注意,URL 以 dl.dropboxusercontent.com 开头,如上一节所述。)
变成:
https://dl.dropboxusercontent.com/s/xttkmuvu7hh72vu/MyFile.pdf?dl=1
在浏览器的地址字段中输入新的 URL,它会自动下载该文件,而不是打开该文件。
(引用:[以上从 dropbox 帮助复制的文本] https://www.dropbox.com/help/201/en )
关于android - 如何解析 Dropbox 上托管的 XML 文件,使其不渲染而是下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24430117/