Очень часто приходится хранить информацию форм и для этого можно использовать xml файлы. В данном уроке мы это и рассмотрим, как можно работать с файлами XML.
Библиотеки Android имеют набор классов для работы с XML-документами с произвольной структурой и содержанием.
Шаг 1.
Для того чтобы упаковать статический XML файл вместе с вашим приложением, вам нужно поместить его в папку: res/xml/
В каталоге res/ создайте подкаталог xml/ в котором будет располагаться наш ХМL-файл.
После чего вы получите возможность обращаться в коде программы к этому документу.
Шаг 2.
Рассмотрим загрузку XML-документа произвольной структуры из ресурсов в код программы.
Создадим приложения, которое будет уметь способность читать список имен, фамилий и телефонов, определенных в XML-файле.
Теперь создадим XML файл который будет хранить Имена, Фамилии и номера телефонов сотрудников фирмы и сохраним его в res/xml/ под именем contacts.xml.
Вот как будут выглядеть XML файл contacts.xml
<contacts> <contact first_name="Иван" last_name="Иваненко" phone="090507"/> <contact first_name="Василий" last_name="Пупкин" phone="123456"/> <contact first_name="Денис" last_name="Денисенко" phone="654879"/> <contact first_name="Данил" last_name="Даниленко" phone="234587"/> </contacts>
Шаг 3.
Создадим View состоять она будет с LinearLayout и ListView и назовем main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawSelectorOnTop="false" /> </LinearLayout>
Шаг 4.
Загружаем файл contacts.xml, созданный ранее:
XmlPullParser parser = getResources().getXml(R.xml.contacts);
Метод getXml() возвращает XmlPullParser, используя который можно прочитать загруженный XML-документ в цикле while:
while (parser.getEventType()!= XmlPullParser.END_DOCUMENT) { if (parser.getEventType() == XmlPullParser.START_TAG && parser.getName().equals("contact")) { list.add(parser.getAttributeValue(0) + " " + parser.getAttributeValue(1) + "\n" + parser.getAttributeValue(2)); } parser.next(); }
В конечном итоге ваше приложение должно выглядеть так:
package com.devcolibri.ReadingXMLFile; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Toast; import org.xmlpull.v1.XmlPullParser; import java.util.ArrayList; public class MyActivity extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayList<String> list = new ArrayList<String>(); try { XmlPullParser parser = getResources().getXml(R.xml.contacts); while (parser.getEventType()!= XmlPullParser.END_DOCUMENT) { if (parser.getEventType() == XmlPullParser.START_TAG && parser.getName().equals("contact")) { list.add(parser.getAttributeValue(0) + " " + parser.getAttributeValue(1) + "\n" + parser.getAttributeValue(2)); } parser.next(); } } catch (Throwable t) { Toast.makeText(this, "Ошибка при загрузке XML-документа: " + t.toString(), 4000) .show(); } setListAdapter(new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, list)); } }
Обратите внимание что наследуется MyActivity не от Activity а от ListActivity.
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
6 комментариев к статье "Работа с XML в Android"