Работа с произвольными XML-файлами ресурсов

Работа с произвольными XML-файлами ресурсов

Кроме уже описанных структурированных ресурсов, Android позволяет использовать в качестве ресурсов произвольные XML-файлы. Во-первых, этот подход распространяет преимущества использования ресурсов на произвольные XML-файлы и предоставляет быстрый способ ссылки на эти файлы по генерируемым для них идентификаторам ресурсов. Во-вторых, подход позволяет выполнять локализацию таких ресурсных XML- файлов. В-третьих, эти XML-файлы можно компилировать, чтобы эффективно использовать ресурсы устройства при их хранении.

XML-файлы, которые необходимо читать в подобной манере, хранятся в подкаталоге /res/xml. В листинге 3.30 приведен пример XML-файла /res/xml/test.xml.

Листинг 3.30. Пример XML-файла

>rootelem1<

>subelem1<

Hello World from an xml sub element >/subelem1<

>/rootelem1<

Как и в случае с другими XML-файлами ресурсов в Android, перед помещением в пакет приложения AAPT компилирует такие XML-файлы. Для разбора таких файлов необходимо использовать экземпляр класса XmlPullParser. Это можно сделать с помощью кода из листинга 3.31 в любом контексте (в том числе activity).

Листинг 3.31. Чтение XML-файла

Resources res = activity.getResources(); XmlResourceParser xpp = res.getXml(R.xml.test);

Возвращенный объект XmlResourceParser является экземпляром XmlPullParser, и он также реализует интерфейс java.util.AttributeSet. В листинге 3.32 приведен более полный кодовый фрагмент, в котором читается файл test.xml.

В этом листинге демонстрируется получение объекта XmlPullParser, его использование для навигации элементов XML в XML-документе и применение дополнительных методов класса XmlPullParser для доступа к внутренним деталям XML-элементов. Если нужно выполнить данный код, необходимо создать XML-файл, как было показано выше, и вызвать функцию getEventsFromAnXMLFile из любого элемента меню или обработчика щелчка на кнопке. Эта функция возвращает строку, которую можно вывести в поток журнала с помощью метода Log.d.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий