2016-03-09 2 views
-1

Как загрузить XML-файл из URL-адреса и преобразовать XML-файл в строку? В частности, я хочу загрузить RSS-канал и преобразовать его в строку.Как загрузить XML и преобразовать в строку

Я попытался это, но он не работает:

protected List<Rss> doInBackground(Void... params) { 
 

 
     String xmlContent; 
 
     Document doc = null; 
 

 
     try { 
 
      doc = Jsoup.connect(feedUrl).get(); 
 
     } catch (IOException e) { 
 
      e.printStackTrace(); 
 
     } 
 
     xmlContent = doc.toString(); 
 
     return RssParser.parseFeed(xmlContent); 
 
    }

+0

Возможный дубликат [Как загрузить XML-файл с сервера и сохранить его в SD-карты] (http://stackoverflow.com/questions/8986376/ how-to-download-xml-file-from-server-and-save-it-in-sd-card) –

+0

Когда вы загружаете его, он * является * строкой. –

+0

Используйте модификацию для загрузки, а затем используйте простой конвертер xml с модификацией http://square.github.io/retrofit/ – Roee

ответ

1

Вы можете использовать HttpURLConnection, Пример кода:

String xmlString; 
HttpURLConnection urlConnection = null; 
URL url = new URL("http://example.com"); 
String userName = "test"; 
String password = "password"; 
try { 
    urlConnection = (HttpURLConnection)url.openConnection(); 
    // set authentication 
    String userCredentials = userName+":"+password; 
    String basicAuth = "Basic " + new String(Base64.encode(userCredentials.getBytes(), Base64.DEFAULT)); 
    urlConnection.setRequestProperty("Authorization", basicAuth.trim()); 
    // set request method 
    urlConnection.setRequestMethod("GET"); 
    if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) { 
     StringBuilder xmlResponse = new StringBuilder(); 
     BufferedReader input = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()), 8192); 
     String strLine = null; 
     while ((strLine = input.readLine()) != null) { 
      xmlResponse.append(strLine); 
     } 
     xmlString = xmlResponse.toString();     
     input.close(); 
    } 
    } 
    catch (Exception e) {// do something 

    } 
    finally {// close connection 
    if (urlConnection != null) { 
     urlConnection.disconnect(); 
     } 
} 
+0

Большое вам спасибо –

1

Используйте URLConnection или HttpURLConnection подкласс, чтобы загрузить файл.

http://developer.android.com/reference/java/net/URLConnection.html

использовать класс StringBuilder взять содержимое файла, а затем ToString() когда сделано.

http://developer.android.com/reference/java/lang/StringBuilder.html

Oracle Пример подключения:

https://docs.oracle.com/javase/tutorial/networki/urls/readingWriting.html

+0

Я довольно новичок в программировании. Не могли бы вы показать пример, пожалуйста? –

+0

Я пробую jsoup, но он не работает –

1

Следуйте this на сайте разработчика Android.

В основном вам просто нужно использовать следующие классы:

URL - Создать новый URL.

HttpURLConnection - открывает соединение с URL

InputStream - получить ответ.

Убедитесь, что вы используете AsyncTask или secondery тему подойти к вебу, не делаете это в основном потоке

ответ вернется в Строки автоматически, она доцент имеет значения, если вы открываете подключение к XML файл, JSON файл или даже IMAGE (не реально читаемый, но все еще строковый) файл.

Я попытаюсь отредактировать и написать полный ответ позже, если вам все еще нужно.