En Android, la interfaz XMLPullParser proporciona la funcionalidad para analizar los archivos XML en las aplicaciones de Android. El XMLPullParser es un método de análisis simple y eficiente para analizar los datos XML en comparación con otros métodos de análisis como DOM Parser y SAX Parser. El XMLPullParser tiene un método next() que brinda acceso a eventos de análisis de alto nivel. El método next() hará avanzar el analizador al siguiente evento. Las siguientes son las series de eventos disponibles en XMLPullParser , que serán vistos por el método next() .
- START_DOCUMENT: el analizador comienza a procesar el documento XML.
- START_TAG: en este evento, podemos obtener la etiqueta de inicio en XML.
- TEXTO: En este evento, podemos leer el contenido del texto usando el método getText().
- END_TAG: se leyó una etiqueta final.
- END_DOCUMENT: No hay más eventos disponibles.
Análisis XML de otras dos formas. Por favor, consulte los siguientes artículos:
¿Qué vamos a hacer?
XMLPullParser analiza un archivo XML con una serie de eventos, como START_DOCUMENT, START_TAG, TEXT, END_TAG y END_DOCUMENT para analizar el documento XML. Para leer y analizar archivos XML utilizando XMLPullParser en Android, es necesario crear una instancia de XMLPullParserFactory y XMLPullParser .
Acercarse
Para analizar un archivo XML utilizando un analizador DOM en Android, seguimos los siguientes pasos:
Paso 1: Crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.
Paso 2: Crea una carpeta de activos
Cree una carpeta de activos debajo de la carpeta principal en el diseño del proyecto . Cree un archivo de recursos de Android en esta carpeta, donde colocaremos la información en forma de XML . Nombre este archivo como userdetails.xml . Para hacerlo, consulte los siguientes pasos:
Haga clic en Proyecto como se muestra en el lado izquierdo de la imagen de abajo.
Expanda hasta encontrar la carpeta principal, haga clic derecho sobre ella, vaya a Nuevo > Carpeta > Carpeta de activos
Luego simplemente haga clic en el botón Finalizar.
Ahora la carpeta de activos se crea correctamente. Haga clic con el botón derecho en la Carpeta de activos > Nuevo > Archivo de recursos de Android
Déle el nombre Información, cambie el tipo a XML y finalice.
Nota: a veces, al hacer clic con el botón derecho en la carpeta Activos y crear un archivo de recursos de Android, se crea un archivo en la carpeta res . Si esto sucede, corte nuestro archivo y péguelo directamente en la carpeta de activos . Esto sucede debido a algunas configuraciones internas.
Pegue esta información que está en forma de XML, que se mostrará en el archivo userdetails.xml . A continuación se muestra el código para el archivo userdetails.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <users> <user> <name>Tom</name> <designation>Actor and Producer</designation> </user> <user> <name>Danny</name> <designation>Music Director</designation> </user> <user> <name>Christopher</name> <designation>Writer</designation> </user> </users>
Paso 3: trabajar con el archivo activity_main.xml
Ahora vaya al archivo activity_main.xml que representa la interfaz de usuario de la aplicación. Cree un ListView como se muestra. actividad_principal.xml
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!--Display the list from list_row file--> <ListView android:id="@+id/user_list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:dividerHeight="1dp" /> </LinearLayout>
Paso 4: crea otro archivo de diseño
Vaya a aplicación > res > diseño > haga clic con el botón derecho en > Nuevo > Archivo de recursos de diseño y nombre el archivo como list_row. El archivo list_row.xml se usa para mostrar los datos en ListView . lista_fila.xml
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="5dip"> <!--TextView to display the name from the userdetails file--> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="17dp" android:textStyle="bold" /> <!--TextView to display the designation from the userdetails file--> <TextView android:id="@+id/designation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/name" android:layout_marginTop="7dp" android:textColor="#343434" android:textSize="14dp" /> </RelativeLayout>
Paso 5: trabajar con el archivo MainActivity.kt
Finalmente, vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.
Kotlin
import android.os.Bundle import android.widget.ListAdapter import android.widget.ListView import android.widget.SimpleAdapter import androidx.appcompat.app.AppCompatActivity import org.xmlpull.v1.XmlPullParser import org.xmlpull.v1.XmlPullParserException import org.xmlpull.v1.XmlPullParserFactory import java.io.IOException import java.util.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) try { // creating a user list string hash map arraylist val userList = ArrayList<HashMap<String, String?>>() // creating a user string hashmap var user = HashMap<String, String?>() // declaring the list view from the layout file val lv = findViewById<ListView>(R.id.user_list) // input stream the userdetails.xml file val istream = assets.open("userdetails.xml") //creating a XmlPull parse Factory instance val parserFactory = XmlPullParserFactory.newInstance() val parser = parserFactory.newPullParser() // setting the namespaces feature to false parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false) // setting the input to the parser parser.setInput(istream, null) // working with the input stream var tag: String? = "" var text: String? = "" var event = parser.eventType while (event != XmlPullParser.END_DOCUMENT) { tag = parser.name when (event) { XmlPullParser.START_TAG -> if (tag == "user") user = HashMap() XmlPullParser.TEXT -> text = parser.text XmlPullParser.END_TAG -> when (tag) { "name" -> user["name"] = text "designation" -> user["designation"] = text "user" -> userList.add(user) } } event = parser.next() } // List Adapter to broadcast the information to the list_rows.xml file val adapter: ListAdapter = SimpleAdapter(this, userList, R.layout.list_row, arrayOf("name", "designation"), intArrayOf(R.id.name, R.id.designation) ) lv.adapter = adapter } catch (e: IOException) { e.printStackTrace() } catch (e: XmlPullParserException) { e.printStackTrace() } } }
Salida: ejecutar en el emulador
Publicación traducida automáticamente
Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA