Посмотрите на странице Google, о хранении данных на Android. http://developer.android.com/guide/topics/data/data-storage.html
Вы можете скачать XML-файл в довольно простой ситуации. Другой вопрос, как у вас был задан вопрос здесь:
Download a file with Android, and showing the progress in a ProgressDialog
В этом примере файл будет сохранен на SD-карте. Обязательно изменить OutputStream, указывающий на SD-карту, чтобы она указывала на частное хранение, а эталонная страница описывает:
FileOutputStream fos = openFileOutput(your_xml_filename, Context.MODE_PRIVATE);
Для того, чтобы перейти на новый XML как можно более простым, я бы инкапсулировать все связанные с XML функции в одном классе и обеспечить простой способ перехода на новый XML. Например,
class XMLUser {
private Location someLocation;
public XMLUser(String pathToXml) {
readxmlAndSetLocations(pathToXml);
}
}
Тогда вы бы инициализировать новый объект XMLUser всякий раз, когда вы должны изменить файл XML. Как так:
XMLUser xmlStuff = new XMLUser(PATH_TO_RES_FILE);
//... do something with it
//... update found
XMLUser xmlStuff = new XMLUser(PATH_TO_PRIVATEDATA_FILE);
Другим способом было бы использовать один и тот же объект и просто обновить местоположения из файла XML:
class XMLUser {
private Location someLocation;
public void updateLocations(String pathToXml) {
//Read your xml here and update the locations accordingly.
}
}
например
XMLUser xmlStuff = new XMLUser(PATH_TO_RES_FILE);
//... do something with it
//... update found
xmlStuff.updateLocations(PATH_TO_UPDATED_XML);
Ваши вопросы позволяют принимать самые разнообразные ответы, поэтому я не могу дать быстрый и точный результат.
И да, я рекомендую сохранять данные XML во внутреннем хранилище. XML-файл должен быть достаточно маленьким по размеру, чтобы не создавать проблем, и логически он связан с внутренней функциональностью приложения. С которым пользователь не должен вмешиваться. Кроме того, внутреннее хранилище не снимается, поэтому, если пользователь изменит SD-карту, обновленные данные все равно будут там.
Считаете ли вы использование SQLite? Это намного быстрее, чем xml-файлы. Вы можете начать с проверки того, что ваша база данных пуста, поместите ваши данные xml там, где она есть, а затем загрузите остальную информацию с сервера и обновите ее каждый раз, когда вам нужно. –