Полезные примеры Android

Полезные примеры Android
Android — XML-парсер

XML расшифровывается как Extensible Mark-up Language. XML — очень популярный формат, обычно используемый для обмена данными в Интернете. В этой главе объясняется, как анализировать XML-файл и извлекать из него необходимую информацию.

Android предоставляет три типа анализаторов XML: DOM, SAX и XMLPullParser . Среди всех них Android рекомендует XMLPullParser, потому что он эффективен и прост в использовании. Итак, мы собираемся использовать XMLPullParser для анализа XML.

Первый шаг — определить поля в данных XML, которые вас интересуют. Например. В XML, приведенном ниже, нас интересует только температура.

<?xml version="1.0"?>
<current>
<city id="2643743" name="London">
<coord lon="-0.12574" lat="51.50853"/>
<country>GB</country>
<sun rise="2013-10-08T06:13:56" set="2013-10-08T17:21:45"/>
</city>
<temperature value="289.54" min="289.15" max="290.15" unit="kelvin"/>
<humidity value="77" unit="%"/>
<pressure value="1025" unit="hPa"/>
</current>

XML — Элементы

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

Sr.No Компонент и описание
1

Prolog

XML-файл начинается с пролога. Первая строка, содержащая информацию о файле, — это пролог.

2

Events

XML-файл имеет много событий. Событие могло быть таким. Начало документа, конец документа, начало тега, конец тега и текст и т. Д.

3

Text

Помимо тегов и событий, XML-файл также содержит простой текст. Например, GB — это текст в теге страны.

4

Attributes

Атрибуты — это дополнительные свойства тега, такие как значение и т. Д.

XML — синтаксический анализ

На следующем шаге мы создадим объект XMLPullParser, но для его создания сначала создадим объект XmlPullParserFactory, а затем вызовем его метод newPullParser () для создания XMLPullParser. Его синтаксис приведен ниже —

private XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
private XmlPullParser myparser = xmlFactoryObject.newPullParser();

Следующий шаг включает указание файла для XmlPullParser, который содержит XML. Это может быть файл или поток. В нашем случае это поток, его синтаксис приведен ниже —

myparser.setInput(stream, null);

Последний шаг — разобрать XML. Файл XML состоит из событий, имени, текста, значения атрибутов и т. Д. Итак, XMLPullParser имеет отдельную функцию для анализа каждого компонента файла XML. Его синтаксис приведен ниже —

int event = myParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT)  {
String name=myParser.getName();
switch (event){
case XmlPullParser.START_TAG:
break;
case XmlPullParser.END_TAG:
if(name.equals("temperature")){
temperature = myParser.getAttributeValue(null,"value");
}
break;
}		 
event = myParser.next(); 					
}

Метод getEventType возвращает тип происходящего события. например: начало документа, начало тега и т. д. Метод getName возвращает имя тега, и, поскольку нас интересует только температура, мы просто проверяем в условном выражении, что если у нас есть тег температуры, мы вызываем метод getAttributeValue, чтобы вернуть нам значение тега температуры.

Помимо этих методов, этот класс предоставляет другие методы для лучшего анализа файлов XML. Эти методы перечислены ниже —

Sr.No Метод и описание
1

getAttributeCount ()

Этот метод просто возвращает количество атрибутов текущего начального тега

2

getAttributeName(int index)

Этот метод возвращает имя атрибута, указанного значением индекса.

3

getColumnNumber ()

Этот метод возвращает Возвращает текущий номер столбца, начиная с 0.

4

getDepth ()

Этот метод возвращает. Возвращает текущую глубину элемента.

5

getLineNumber ()

Возвращает текущий номер строки, начиная с 1.

6

getNamespace ()

Этот метод возвращает URI пространства имен текущего элемента.

7

getPrefix ()

Этот метод возвращает префикс текущего элемента

8

getName ()

Этот метод возвращает имя тега

9

getText ()

Этот метод возвращает текст для этого конкретного элемента

10

isWhitespace ()

Этот метод проверяет, содержит ли текущее событие TEXT только символы пробела.

Пример

Вот пример, демонстрирующий использование XML DOM Parser. Он создает базовое приложение, позволяющее анализировать XML.

Чтобы поэкспериментировать с этим примером, вы можете запустить это на реальном устройстве или в эмуляторе.

Шаги Описание
1 Вы будете использовать Android studio для создания Android-приложения в пакете com.example.sairamkrishna.myapplication.
2 Измените файл src / MainActivity.java, чтобы добавить необходимый код.
3 Измените res / layout / activity_main, чтобы добавить соответствующие XML-компоненты.
4 Создайте новый файл XML в папке Assets Folder / file.xml
5 Измените AndroidManifest.xml, чтобы добавить необходимое разрешение в Интернете.
6 Запустите приложение и выберите работающее устройство Android, установите на него приложение и проверьте результаты.

Ниже приводится содержимое измененного файла основного действия MainActivity.java .

package com.example.sairamkrishna.myapplication;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView)findViewById(R.id.textView1);
try {
InputStream is = getAssets().open("file.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(is);
Element element=doc.getDocumentElement();
element.normalize();
NodeList nList = doc.getElementsByTagName("employee");
for (int i=0; i<nList.getLength(); i++) {
Node node = nList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element2 = (Element) node;
tv1.setText(tv1.getText()+"\nName : " + getValue("name", element2)+"\n");
tv1.setText(tv1.getText()+"Surname : " + getValue("surname", element2)+"\n");
tv1.setText(tv1.getText()+"-----------------------");
}
}
} catch (Exception e) {e.printStackTrace();}
}
private static String getValue(String tag, Element element) {
NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = nodeList.item(0);
return node.getNodeValue();
}
}

Ниже приводится содержимое Assets / file.xml .

<?xml version="1.0"?>
<records>
<employee>
<name>Sairamkrishna</name>
<surname>Mammahe</surname>
<salary>50000</salary>
</employee>
<employee>
<name>Gopal </name>
<surname>Varma</surname>
<salary>60000</salary>
</employee>
<employee>
<name>Raja</name>
<surname>Hr</surname>
<salary>70000</salary>
</employee>
</records>

Ниже приводится измененное содержимое файла xml res / layout / activity_main.xml .

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>

Ниже приводится содержимое файла AndroidManifest.xml .

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

Попробуем запустить наше только что измененное приложение. Я предполагаю, что вы создали свой AVD при настройке среды. Чтобы запустить приложение из студии Android, откройте один из файлов активности вашего проекта и щелкните Значок запуска Eclipseзначок « Выполнить» на панели инструментов. Студия Android устанавливает приложение на ваш AVD и запускает его, и если все в порядке с вашей настройкой и приложением, оно отобразит следующее окно эмулятора —

Руководство по синтаксическому анализатору Anroid XML

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the compare bar
Compare