2

我的目标是从 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 和脚本,然后是异常:

org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT @13:51 in      java.io.FileReader@4287eae8)

任何想法如何解决它?先感谢您

4

2 回答 2

5

我只在评论中回答了这个问题,所以这是正确的真正答案,所以你的问题可以解决!

如何强制从 Dropbox 下载文件?

您可以对 Dropbox 链接 URL 进行一些简单的修改,以确保浏览器以您想要的方式处理您的 Dropbox 链接。

在浏览器中渲染文件

大多数现代 Web 浏览器可以自动检测、打开和以其他方式处理许多文件类型。例如,单击浏览器中的图像链接通常会在浏览器中打开图像,而不是将其下载到您的桌面。

要绕过预览页面并允许您的浏览器处理您的文件,请将URL 中的www替换为dl并将dropbox替换为dropboxusercontent。例如:

https://www.dropbox.com/s/xttkmuvu7hh72vu/MyFile.pdf

变成:

https://dl.dropboxusercontent.com/s/xttkmuvu7hh72vu/MyFile.pdf

强制下载文件或文件夹

使用上面的新直接链接,您可以进一步修改 URL 以强制浏览器下载文件,而不是原生处理它。要强制下载文件,请使用?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,它应该会自动下载而不是打开文件。

(参考:[从保管箱帮助复制的上述文本] https://www.dropbox.com/help/201/en

于 2014-06-29T19:04:21.787 回答
0

有一个“?” 标记丢失

 <?xml version="1.0" encoding="UTF-8">  

应该像

 <?xml version="1.0" encoding="UTF-8"?>  
于 2014-06-26T12:40:04.407 回答