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();
}

その結果、開始ドキュメント、html、ヘッド、およびスクリプトのみを受け取り、その後に例外が続きます。

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

それを解決する方法はありますか?前もって感謝します

4

2 に答える 2

5

私はコメントでこの質問に答えただけなので、ここに本当の答えが正しく書かれているので、あなたの質問を解決することができます!

Dropbox からファイルを強制的にダウンロードするにはどうすればよいですか?

ブラウザが Dropbox リンクを希望どおりに処理できるようにするために、Dropbox リンク URL にいくつかの簡単な変更を加えることができます。

ブラウザでファイルをレンダリングする

最新の Web ブラウザのほとんどは、多くのファイル タイプを自動的に検出して開き、処理することができます。たとえば、ブラウザで画像のリンクをクリックすると、通常、デスクトップに画像がダウンロードされるのではなく、ブラウザ内で画像が開きます。

プレビュー ページをバイパスしてブラウザでファイルを処理できるようにするには、URL のwwwdlに、 dropboxdropboxusercontentに置き換えます。例えば:

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 に答える