- Работа с XML в Android
- Шаг 1.
- Шаг 2.
- Шаг 3.
- Шаг 4.
- Android: динамически подгружаем фрагменты из сети
- Создаем фрагмент
- Реализуем загрузку классов
- Открываем из фрагмента другие фрагменты
- Подгружаем из сети xml-разметку
- Послесловие
- Работа с XML
- Ресурсы XML и их парсинг
- Как парсить XML на Android
- Как парсить XML на Android : 2 комментария
- Processing and Parsing XML in Android
- What is XML?
- XML elements
- XML Parsing
- Steps involved in XML parsing
- XML parsing example
- Conclusion
Работа с XML в Android
Очень часто приходится хранить информацию форм и для этого можно использовать xml файлы. В данном уроке мы это и рассмотрим, как можно работать с файлами XML.
Библиотеки Android имеют набор классов для работы с XML-документами с произвольной структурой и содержанием.
Шаг 1.
Для того чтобы упаковать статический XML файл вместе с вашим приложением, вам нужно поместить его в папку: res/xml/
В каталоге res/ создайте подкаталог xml/ в котором будет располагаться наш ХМL-файл.
После чего вы получите возможность обращаться в коде программы к этому документу.
Шаг 2.
Рассмотрим загрузку XML-документа произвольной структуры из ресурсов в код программы.
Создадим приложения, которое будет уметь способность читать список имен, фамилий и телефонов, определенных в XML-файле.
Теперь создадим XML файл который будет хранить Имена, Фамилии и номера телефонов сотрудников фирмы и сохраним его в res/xml/ под именем contacts.xml.
Вот как будут выглядеть XML файл contacts.xml
Шаг 3.
Создадим View состоять она будет с LinearLayout и ListView и назовем main.xml:
Шаг 4.
Загружаем файл contacts.xml, созданный ранее:
Метод getXml() возвращает XmlPullParser, используя который можно прочитать загруженный XML-документ в цикле while:
В конечном итоге ваше приложение должно выглядеть так:
Весь код MyActivity:
Обратите внимание что наследуется MyActivity не от Activity а от ListActivity.
Источник
Android: динамически подгружаем фрагменты из сети
В этой статье мы рассмотрим, как загружать классы (в том числе, фрагменты) из сети во время выполнения программы, и использовать их в своем Android-приложении. Область применения подобной технологии на практике — это отдельная тема для разговора, мне же сама по себе реализация данной функциональности показалась довольно интересной задачей.
Создаем фрагмент
Для начала создадим некий фрагмент Fragment0 и реализуем у него метод onCreateView():
Стандартный метод создания разметки из xml в нашем случае работать не будет, поэтому для первого фрагмента мы создаем ее программно.
Далее нам нужно на основе модуля, содержащего фрагмент, создать APK, распаковать его с помощью unzip, и выложить файл classes.dex на сервер.
Реализуем загрузку классов
В отдельном модуле создадим класс NetworkingActivity и реализуем в нем следующие методы:
Открываем из фрагмента другие фрагменты
Для этого в классе LoadableFragment (суперкласс всех наших фрагментов) реализуем следующий метод:
Надеюсь, здесь все понятно.
Наш следующий фрагмент мы попробуем создать несколько иначе.
Подгружаем из сети xml-разметку
Для начала, создаем и выкладываем на сервер файл разметки. Я нашел на github библиотеку, которая умеет парсить xml layout из строки. Для корректной работы пришлось ее немного подпилить.
И так, добавим в наш класс LoadableFragment следующие методы:
Теперь с помощью этого всего создадим фрагмент Fragment1:
Послесловие
Полностью исходный код проекта можно посмотреть на github. Готовый APK можно скачать здесь.
Источник
Работа с 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 и получить его содержимое.
Когда данный объект проходит по документу 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 (eXtensible Markup Language — расширяемый язык разметки) в программировании огромна: этот формат используется повсеместно во многих языках программирования. В частности, при разработке приложений на Android XML отвечает за то, что пользователь увидит на экране своего смартфона (интерфейс приложения, строковые ресурсы, векторные изображения и т.д.). Кроме того, данный формат зачастую используется для хранения и передачи различных данных.
Именно из-за того, что XML можно использовать как хранилище данных, встаёт вопрос: как с этими данными взаимодействовать, как получать их из XML и отправлять обратно.
Ранее мы говорили о том, что в Android 8.0 Oreo для хранения конфигураций Wi-Fi сетей теперь используется другой файл (подробнее об этом можно почитать здесь). Поскольку этот файл конфигурации как раз нужного нам формата XML, попробуем распарсить его и вытащить их него нужные данные.
Сама структура XML-файла конфигурации выглядит следующим образом:
Нужные нам данные хранятся внутри тега , каждый тег обозначает тип значения, затем внутри в виде атрибутов устанавливаются его название и собственно значение.
Для извлечения данных в Android есть полезный интерфейс XmlPullParser. С его помощью можно в цикле while пройтись построчно по каждому тегу в документе и проверить его содержимое. Каждый проход по циклу представляет собой определённое событие, метод getEventType() возвращает тип этого события, например: START_DOCUMENT, END_TAG и др. Переход к следующему тегу осуществляется с помощью метода next().
Извлечём некоторые данные из XML файла. Получившийся код выглядит следующим образом:
В данном случае нас интересует событие START_TAG. Когда это событие наступает, нужно найти нужные данные по типу и имени, и затем забрать из этого тега значение. В результате выполнения цикла выводим всё на экран.
Как видно, реализация довольно проста, разработчику достаточно только понимать, как устроен XML-документ.
Однако это не единственный способ извлечь данные из XML. В Android есть также класс DocumentBuilder, который позволяет получать экземпляры DOM документов из XML DOM (Document Object Model) — это программный интерфейс, благодаря которому можно получать доступ к данным HTML или XML.
Ключевым методом здесь будет являться getElementsByTagName(), который возвращает список тегов с нужным именем, затем внутри этого списка ищется нужный по атрибуту name. Реализация выглядит следующим образом.
В результате мы получили аналогичный список, как и при первом случае.
Здесь были приведены не все способы распарсить XML, существует множество различных пользовательских библиотек, предоставляющих такой же функционал. Всё зависит от того, какой способ будет удобнее разработчику в конкретной ситуации.
Как парсить XML на Android : 2 комментария
Спасибо за хорошую статью. Жаль, раньше на нее не попал и парсил документ с помощью строковых методов java)))
Источник
Processing and Parsing XML in Android
Sharing data over the internet is very popular. We share our information with the other users over the internet. Let’s take a very common example, since we all are developers and to be more precise, we all are Android Developers and we all must have visited the StackOverflow website whenever we are stuck into some problem in our projects and in every 99 out of 100 cases, we find the solution to our problem. The answer that we get from the StackOverflow website consists of various parts that we are less bothered about. In general, the answers or the questions present on the website contains the id of the question, type of the question, author name of the article or question, publishing data, URL and many other things are there on the website. But we want only meaningful data i.e. we want answers and the authors and nothing else.
The problem arises when you want to access the data of a particular website in your Android Application. This is because the data present on the websites are in JSON format or in XML format. So, in order to use that data or to extract the meaningful information from that data, you have to parse that XML file or a JSON file.
So, in this blog, we will learn how to process and parse the XML data in Android. So, let’s get started.
What is XML?
XML stands for Extensible Markup Language. It is a set of rules that are used to encode data or documents in a Machine-readable language. There are many websites that use an XML format to share data on the internet. For example, many blogging websites use an XML format to share data between users. So, XML parsing and processing become an important task to use that data in our Android Application.
XML elements
In general, an XML file consists of a number of elements that together make an XML file. They are the basic building blocks of XML document. These elements are used to store some text elements, attributes, media, etc. Below is the syntax of XML element:
Here, element-name is the name of the element and attributes are used to define the property of XML element. Following is an example of an XML document that is used to describe the data of the student:
We can broadly divide the XML elements in four parts:
- Prolog: It is the first line that contains the information about the XML file i.e. it is the first line of the XML file.
- Events: An XML file contains a number of events like document start, document end, Tag start, Tag end, etc.
- Text: In between the tags(opening and closing), there can be some text. For example, in the above example, “John” is the text.
- Attributes: These are the properties of XML elements.
XML Parsing
So, we have seen the introduction of XML and our next task is, How to parse the XML in Android? So, let’s find out.In Android, there are various parsers that can be used to parse the XML file in Android. Some of these are:
- XMLPullParser
- DOM Parser
- SAX Parser
Among these three parsers, XMLPullParser is the most commonly and most widely used parsers in Android. This is because XMLPullParser is very efficient and easy to use. Also, unlike the DOM Parser which loads the whole file in the memory and then parses it, the XMLPullParser consumes less memory.
Steps involved in XML parsing
Following are the steps that are involved in XML parsing:
- Analyze the feed: There are many cases when you will be provided with a number of data but you need only few of them. SO, before parsing the XML, your first step should be to find the desired element in the XML data. For example, here is example of XML file of StackOverflow:
Here, if you want to extract the data present in the entry tag and the data of its sub tags then you should keep note of these things.
- Create XMLPullParser object: Our next step is to create the object of XMLPullParser and specify the file name for the XMLPullParser that contains XML. You can use a file or a stream. Following is the code to create an object of the XMLPullParser and then passing the file name for the XMLPullParser:
- Read the desired data: Our last step is to parse the data of the XML file. The following readFeed() function is used to parse the XML file and extract only the values of entries and store it into a list:
Here, XMLPullParser.END_TAG is used to find if the parser has reached to the last tag of the file or not. If it has reached then return and it has not reached then we will check for the entry tag and if found then will add the value to the entries list. If the values are not found be to of entries type then we can skip the parser. At last, we return entries.
Following are the methods that can be used while parsing an XML file:
- getEventType(): This method is used to get the event type. For example, Document start, Document End, Tag start, Tag end, etc.
- getName(): This is used to get the tag name in a file. For example, in the above code, the tag name is entry.
- getAttributeValue(): This method is used to get the attribute value of a particular tag.
- getAttributeCount(): It returns the total number of attributes of the current tag.
- getAttributeName(int index): It returns the attribute name at a particular index.
- getColumnNumber(): It returns the current column number using a 0 based indexing.
- getName(): It returns the name of the tag.
- getText(): It returns the text present in a particular element.
XML parsing example
Now, let’s do one example to understand the concept of XML parsing ina very easy and clear manner.
Open Android Studio and create a project with Empty Activity template.
The very first step is to create the XML file. Either you create your own XML file or you can use mine. To create an XML file, go to java folder and then right click on it. Then click on New > Folder > Assets folder and then OK. One assets folder will be created for you. Now right click on that folder and create a file and name it as example.xml. Following is the XML content of example.xml file:
This is a simple example of student data containing the name, surname, mobile and section of the student. In this example, we will extract the name, surname and section of the student. We will ignore the mobile number.
Now, let’s code for the UI part of our application. Here we will display the desired data on a TextView. So, open the activity_main.xml file and add the below code:
So, we are done with the UI part. Now, let’s write the code for the XML parsing. Below is the code for the MainActivity.kt file:
Now, run the application on your mobile phone and try to add more data to your XML file i.e. the example.xml file.
Conclusion
In this blog, we learned about XML parsing in Android. We learned how to parse the data present in the XML format in Android Application. We saw how to use XMLPullParser to do XML parsing. At last, we did one example of XML parsing. You can get more contents about XML parsing at the Android Developer Website.
Источник