Как создавать xml файлы андроид

Создаём текстовый редактор

Операции с файлами

Рассмотрим вопросы ввода/вывода, которые являются распространёнными операциями в программировании. В Android можно сохранять файлы непосредственно на самом устройстве или на внешней карте памяти. Для каждой программы на устройстве выделяется собственная папка, в которой приложение может хранить свои файлы. По умолчанию другие приложения не могут обращаться к этим файлам. Если вы сохраняете файлы на внешнем накопителе, то доступ возможен.

Android использует стандартные операции ввода/вывода, принятые в Java. Например, Android реализует файловые потоки с помощью классов из пакета java.io, а также имеет собственные классы для работы с файлами внутри приложения.

Чтобы записать данные в файл, необходимо вызвать метод Context.openFileOutput() и передать в качестве параметра имя файла. Метод возвращает стандартный Java-объект FileOutputStream. Вызов метода для данного файла из другого приложения не будет работать, обратиться вы можете только к своим файлам. Например, чтобы создать файл и записать данные, пишем следующий код:

Если имеется статический файл, который надо упаковать с вашим приложением во время компиляции проекта, можно сохранить его в каталоге res/raw/, а затем открыть его при помощи метода Resources.openRawResource(). Он возвращает объект InputStream, который можно использовать для чтения файла. После окончания работы с потоком не забудьте его закрыть, вызвав метод close().

Создадим простейший аналог Блокнота, позволяющий записывать и читать данные из файла.

На экране активности разместим компонент EditText и растянем его:

activity_main.xml

Создадим пункты меню Открыть и Сохранить в ресурсах. Строковые ресурсы добавьте самостоятельно.

res/menu/menu_main.xml

В методах openFile() и saveFile() реализуем операции по открытию и сохранению файла. Для Kotlin код получился намного короче.

Класс MainActivity

Мы получили простой блокнотик, позволяющий сохранять записи в одном заданном файле. Вы можете усовершенствовать приложение, добавив возможность создания новых файлов и их удаления.

Сохранение настроек — Флажки

Расширим функциональность блокнота, добавив в него возможность сохранения различных настроек.

Подготовим различные настройки, которые будем хранить в файле строковых ресурсов strings.xml:

res/values/strings.xml

Теперь создадим файл настроек preferences.xml (если забыли, то перечитайте статью Сохранение настроек):

res/xml/preferences.xml

Итак, мы определили первую настройку под именем pref_openmode, которая будет или сразу загружать файл в поле редактирования, если установлен флажок, или открывать пустое поле, если флажок не установлен.

Создадим новую активность, которая наследует от класса PreferenceActivity. В классе активности для предпочтений внутри метода обратного вызова onCreate() нужно только вызвать метод addPreferencesFromResource() и загрузить XML-файл preferences.xml, содержащий наши настройки (пока одну):

Класс SettingsActivity

Не забываем добавить объявление активности SettingsActivity в файл манифеста AndroidManifest.xml:

Добавим новый пункт меню Настройки в меню (файл res/menu/main.xml), чтобы открывать подготовленное окно настроек.

В методе onOptionsItemSelected() класса MainActivity добавим новый блок when/switch:

Запустите приложение и убедитесь, что в меню появился новый пункт, который открывает окно настроек.

Чтение установок предпочтений нужно проводить в методе onResume(), который вызывается системой как во время запуска приложения, так и после закрытия окна настроек и возврата главной активности на передний план:

В методе getBoolean() второй параметр false означает значение по умолчанию для возвращаемого значения предпочтения, если запрос на чтение установленного значения закончится неудачей.

Читайте также:  Acer w500 установка андроида

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

Сохранение текстовых настроек

Добавим возможность устанавливать размер шрифта для текста. Откроем снова файл preferences.xml и добавим новый элемент EditTextPreference:

В метод onResume() добавим новый код для чтения установленного значения размера шрифта:

Запустите проект и вызовите окно настроек. Теперь у нас появилась опция установки размера шрифта. Если щёлкнуть на новом пункте, то откроется диалоговое окно с текстовым полем ввода.

Обращаю ваше внимание, что в нашем примере не проверяется пользовательский ввод, что может привести к ошибкам, если вместо числового значения для размера шрифта пользователь введёт слово Кот или любое другое слово из трёх букв. Никогда не доверяйте пользователю!

Сохранение настроек — Списки

Продолжим работу с текстовым редактором и добавим в него список для выбора стиля текста. В списке будет четыре опции: Обычный, Полужирный, Курсив, Полужирный+Курсив.

Подготовим массив строк и сохраним его в файле arrays.xml, который необходимо поместить в каталог res/values/ (хотя можно просто добавить в strings.xml).

res/values/arrays.xml

В файл preferences.xml добавим дополнительный элемент ListPreference, в котором определим атрибуты заголовка окна, привязку к массиву значений и значение по умолчанию:

Для чтения настроек из списка добавляем код в метод onResume() класса MainActivity:

Запустив проект, вы теперь увидите новую настройку Стиль для шрифта, которая открывает диалоговое окно для выбора стиля из списка. Обратите внимание, что в диалоговом окне нет кнопки сохранения, только Отмена. Изменения сохраняются сразу при выборе опции списка.

В статье Сохранение настроек можно прочитать дополнительные материалы по улучшению окна настроек. Например, можно добавить новую настройку, связанную с выбором цвета для текста.

Источник

Работа с XML

Ресурсы XML и их парсинг

Одним из распространенных форматов хранения и передачи данных является xml . Рассмотрим, как с ним работать в приложении на Android.

Приложение может получать данные в формате xml различными способами — из ресурсов, из сети и т.д. В данном случае рассмотрим ситуацию, когда файл xml хранится в ресурсах.

Возьмем стандартный проект Android по умолчанию и в папке res создадим каталог xml . Для этого нажмем на каталог res правой кнопкой мыши и в контекстном меню выберем New -> Android Resource Directory :

В появившемся окне в качестве типа ресурсов укажем xml :

В этот каталог добавим новый файл, который назовем users.xml и который будет иметь следующее содержимое:

Это обычный файл xml, который хранит набор элементов user. Каждый элемент характеризуется наличием двух подэлементов — name и age. Условно говоря, каждый элемент описывает пользователя, у которого есть имя и возраст.

В папку, где находится основной класс MainActivity, добавим новый класс, который назовем User :

Этот класс описывает товар, информация о котором будет извлекаться из xml-файла.

И в ту же папку добавим новый класс UserResourceParser :

Определим для класса UserResourceParser следующий код:

Данный класс выполняет функции парсинга xml. Распарсенные данные будут храниться в переменной users. Непосредственно сам парсинг осуществляется с помощью функции parse . Основную работу выполняет передаваемый в качестве параметра объект XmlPullParser . Этот класс позволяет пробежаться по всему документу xml и получить его содержимое.

Читайте также:  Android textview перенос строк

Когда данный объект проходит по документу xml, при обнаружении определенного тега он генерирует некоторое событие. Есть четыре события, которые описываются следующими константами:

START_TAG : открывающий тег элемента

TEXT : прочитан текст элемента

END_TAG : закрывающий тег элемента

END_DOCUMENT : конец документа

С помощью метода getEventType() можно получить первое событие и потом последовательно считывать документ, пока не дойдем до его конца. Когда будет достигнут конец документа, то событие будет представлять константу END_DOCUMENT :

Для перехода к следующему событию применяется метод next() .

При чтении документа с помощью метода getName() можно получить название считываемого элемента.

И в зависимости от названия тега и события мы можем выполнить определенные действия. Например, если это открывающий тег элемента user, то создаем новый объект User и устанавливаем, что мы находимся внутри элемента user:

Если событие TEXT , то считано содержимое элемента, которое мы можем прочитать с помощью метода getText() :

Если закрывающий тег, то все зависит от того, какой элемент прочитан. Если прочитан элемент user, то добавляем объект User в коллекцию ArrayList и сбрываем переменную inEntry, указывая, что мы вышли из элемента user:

Если прочитаны элементы name и age, то передаем их значения переменным name и age объекта User:

Теперь изменим класс MainActivity, который будет загружать ресурс xml:

Вначале получаем ресурс xml с помощью метода getXml() , в который передается название ресурса. Данный метод возвращает объект XmlPullParser , который затем используется для парсинга. Для простоты просто выводим данные в окне Logcat :

Источник

Как создать xml-файл в android

Ребята, у меня проблема с тем, что мой код дает исключение как разрешенное разрешение, когда мы пишем xml в android. Может ли кто-нибудь сказать, что как он будет удален.

Попробуйте это, чтобы создать или прочитать файл в Android. Работа с файлами

И создать / прочитать XML-файл. Попробуйте работать с XML.

Если вам нужен какой-либо демонстрационный проект, связанный с xml, чем сообщите мне, я постараюсь дать вам

Вы пытаетесь создать свой файл на диске C. Android – это система на основе Linux, поэтому там нет дисков. Устройства хранения могут быть установлены на корневую («/») или любую другую папку.

папка вашего приложения /data/

. Попробуйте написать там. Кроме того, вы можете попробовать написать внешнее хранилище, но для вашей прогрмы потребуется разрешение на это:

Это следует упомянуть в вашем файле манифеста.

Подробнее читайте здесь .

Кажется, что вы пытаетесь создать файл в местоположении c: /, который не является допустимым идентификатором пути в системе Android. Android поставляется из Linux-среды.

http://developer.android.com/guide/topics/data/data-storage.html перейдите по этой ссылке, чтобы узнать больше о хранилище данных на Android

Если вы хотите создать файл на своем локальном компьютере, вам сначала нужно создать его на своем устройстве Android, а затем вытащить его с устройства (либо эмулятора, либо вашего реального телефона)

Вам не разрешено писать в это место.

Вы можете сохранить его во внутреннем хранилище или в кеше.

Из-за модели безопасности Android вы не можете писать в /data/new.xml . Это попытка права на корневую файловую систему, поэтому вы получаете отказ в доступе. Попробуйте это без косой черты.

Это должно относиться к вашему приложению.

Вы добавили для этого необходимые разрешения?

Источник

Создание XML

Доброго дня.
Прошу простить мои ламерские вопросы.
Проблема раз:
Нужно сгенерить xml файл.
Погуглил, нашел только как обрабатывать чужие XMLки.
Если не трудно можно пример создания простейшей XML, или ссылку на русскую инфу(где для чайника расписано).

Читайте также:  Файл манифест андроид студио

Проблема два:
Как мне сохранить xml?
Необходимо создать папку на диске девайса, и туда сохранять.

По работе заставили писать програмулину, времени осталось мало, а я дуб дубом)

Создание XML запроса
Всем привет) Пишу приложения для регистрирования пользователей на сервере. Пользователь вводит.

Создание XML файлов Андроидом
Требуется написать программу, которая будет создавать XML файл с некоторым кодом. Я не имею понятия.

Создание объекта через xml разметку. NullPointerExeption
Кажется у меня пробел в основах, я думал прописывая вью через разметку, при сборке создается.

Создание экрана программно и через xml файл
Когда задаю всё программно, все элементы как надо располагаются на экране, ничего не сдвигается.

1. Попробуй тут почитать даже с картинками
http://www.ibm.com/developerwo. ndroidxml/

Добавлено через 5 часов 53 минуты
Ребят проблема, не хочет гадость работать. Нажимаю кнопку Сохранить и пишет что приложение остановлено.
Выкидываю код, посмотрите пожалуйста!

Однако (папка /data/data/имя пакета/) пуста.
‘и только твое приложение сможет читать этот файл’
В дальнейшем данные XMLки будут парсится на сайте.
Как правильно сохранять?

Добавлено через 1 минуту
c4sp3r, спс изучу

VictorAkira, файл должен сохранится в

если имя твоего пакета com.example.nero

еще можно получить путь например так:

c4sp3r,
В DDMS у меня папка data вообще пуста.

Дело в том что мне нужно сохранить XMl так, что бы его можно было вытянуть и обработать.
Работать все это дело будет на планшетах, будут ходить люди на выставке и заполнять анкету(а это и есть мое приложение). А у них точно прав рута не будет.

VictorAkira, ну если рут прав нет конечно она будет пуста.

Ну после создания напиши код чтоб он экспортировал этот файл на sdcard или вообще заливал на сервер и т.п.

Получить список файлов можно например так:

Добавлено через 7 минут
Или сразу сохраняй файл в папку где у тебя есть доступ на чтение правда openFileOutput уже не пойдет
но есть и другие методы.

Добавлено через 4 минуты
Вот тебе еще пример сохранения файла заместо openFileOutput
https://sites.google.com/site/. to-sd-card
или более подробно на русском:
http://startandroid.ru/ru/urok. jlami.html

Уважаемый, ViktorAkira.
Вот вам рабочий класс для создания xml файла с вашей структурой. Создаете объект этого класса и вызываете метод setAttr. Метод сам посмотрит существования файла и если его нет, то создаст с коревым тегом Question. После этого наполнит дочерними тегами и атрибутами. Значения атрибутам будут присвоены те, которые вы передадите в качестве параметров при вызове метода setAttr.
Новая запись в xml файле будет появляться столько раз, сколько вы вызовите этот метод.
Класс еще нужно до ума довести, например, сделать сохранение на SD-CARD (сейчас он пишется в каталог приложения), сделать этого не могу, т.к. комп заглючил, а с ним и IDE.

не забудь только в манифест добавить:

Да и если папки /mnt/sdcard/DCIM не существует файл не сохранится! Можно конечно добавить создание папки и создать например класс для получаемых данных и т.д. но мне лень, остальное сам добавишь.
Кстати папка DCIM вообще-то не предназначена для xml.

Источник

Оцените статью