#android #resources
#Android #Ресурсы
Вопрос:
Я новичок в разработке Android. У меня есть XML-файл с данными, которые будет считывать приложение. Где я должен хранить этот XML-файл? Должен ли он храниться в папке «value»?
Ответ №1:
Я бы сказал, что это зависит. Что вы сохраняете в своем XML-файле? Также существует res/xml
-папка, в которой могут храниться XML-файлы. Но Android делает с XML-файлами практически все, что угодно, поэтому вы, возможно, захотите прочитать мой небольшой туториал о том, куда какие ресурсы поместить.
Кроме того, существует разница между assets
и res
каталогами:
RES
- Никакие подкаталоги не разрешены в определенных папках ресурсов.
R
-класс индексирует все ресурсы и обеспечивает простой доступ.- Существует несколько простых методов, которые помогают считывать файлы, хранящиеся в
res
-каталоге
ресурсы
- Подкаталоги разрешены (столько, сколько вам нравится).
- Нет индексации по
R
-классу - Чтение ресурсов, хранящихся в
assets
, выполняется с помощью AssetManager.
Комментарии:
1. Это правильный ответ. Я предпочитаю не использовать каталог assets, а затем использовать простой XML для синтаксического анализа XML: robertmassaioli.wordpress.com/2011/04/21 /…
2. Спасибо, что объяснили разницу между ними. Это помогает.
3. мне помогла папка res / xml. У меня был XML-файл данных с пользовательскими тегами.
Ответ №2:
Вы можете поместить его в папку res / raw. Затем вы получите к нему доступ с помощью:
getResources().openRawResource(resourceName)
Ответ №3:
У меня было аналогичное требование, и после долгих исследований я нашел 2 решения для размещения пользовательского XML: вы можете разместить пользовательский XML в
-
res / raw/
-
res / xml/
Для доступа к этим местоположениям вы будете использовать следующий код :
a. если XML помещен в res / raw, то :
getResources().openRawResource(R.raw.custom-xml) :
Это дает вам простые методы чтения xml :
с помощью приведенного ниже кода я считываю XML в памяти, размещенной в папке raw :
BufferedReader br = new BufferedReader(new InputStreamReader(getResources().openRawResource(R.raw.custom-xml)));
StringBuilder str = new StringBuilder();
String line;
while ( (line = br.readLine()) != null){
str.append(line);
}
2-й вариант :
getResources().getxml(R.xml.custom-xml);
с помощью этого вы могли бы прочитать xml с помощью анализатора на основе событий.
Комментарии:
1. исправление ** getResources().openRawResource(R.xml.custom-xml) Это должно быть getResources().getxml(R.xml.custom-xml)