Tutorial de análisis XML simple de Android usando DOM

Tutorial de análisis XML simple de Android usando DOM

En este tutorial, aprenderá cómo analizar un archivo XML en su aplicación de Android. En un documento XML, un objeto representa el contenido de la página y lo manipula mediante un analizador DOM. Crearemos una AsyncTask para descargar un archivo XML de nuestro servidor y usaremos un DOM Parser para manipular los resultados en un TextView. Vamos a empezar…

Cree un nuevo proyecto en Eclipse  File  >  New  >  Android Application Project. Complete los detalles y nombre su proyecto  XMLParseTutorial .

Nombre de la aplicación:  XMLParseTutorial

Nombre del proyecto:  XMLParseTutorial

Nombre del paquete:  com.androidbegin.xmlparsetutorial

Abra su  MainActivity .java  y pegue el siguiente código.

Actividad principal .java

paquete com.androidbegin.xmlparsetutorial;

importar java.net.URL;
importar javax.xml.parsers.DocumentBuilder;
importar javax.xml.parsers.DocumentBuilderFactory;
importar org.w3c.dom.Documento;
importar org.w3c.dom.Element;
importar org.w3c.dom.Node;
importar org.w3c.dom.NodeList;
importar org.xml.sax.InputSource;
importar android.app.Actividad;
importar android.app.ProgressDialog;
importar android.os.AsyncTask;
importar android.os.Bundle;
importar android.util.Log;
importar android.widget.TextView;

clase pública MainActivity extiende Actividad {
	// Declarar variables
	vista de texto TextView;
	lista de nodos NodeList;
	ProgressDialog pDialog;
	// Insertar URL de imagen
	Cadena URL = "https://www.androidbegin.com/tutorial/XMLParseTutorial.xml";

	@Anular
	public void onCreate (Paquete guardadoInstanceState) {
		super.onCreate(estadoDeInstanciaGuardado);
		// Obtener la vista de activity_main.xml
		setContentView(R.diseño.actividad_principal);
		// Localice un TextView en su diseño activity_main.xml
		textview = (TextView) findViewById(R.id.text);
		// Ejecutar DownloadXML AsyncTask
		nuevo DescargarXML().ejecutar(URL);
	}

	// DescargarXML AsyncTask
	clase privada DownloadXML extiende AsyncTask<String, Void, Void> {

		@Anular
		vacío protegido onPreExecute() {
			super.onPreExecute();
			// Crear una barra de progreso
			pDialog = new ProgressDialog(ActividadPrincipal.este);
			// Establecer el título de la barra de progreso
			pDialog.setTitle("Android Simple XML Parsing usando DOM Tutorial");
			// Establecer el mensaje de la barra de progreso
			pDialog.setMessage("Cargando...");
			pDialog.setIndeterminate(falso);
			// Mostrar barra de progreso
			pDialog.mostrar();
		}

		@Anular
		protegido Void doInBackground(String... Url) {
			intentar {
				URL url = nueva URL (URL [0]);
				DocumentBuilderFactory dbf = DocumentBuilderFactory
						.nueva instancia();
				DocumentBuilder db = dbf.newDocumentBuilder();
				// Descarga el archivo XML
				Documento doc = db.parse(nuevo InputSource(url.openStream()));
				doc.getDocumentElement().normalize();
				// Localiza el nombre de la etiqueta
				lista de nodos = doc.getElementsByTagName("elemento");

			} captura (Excepción e) {
				Log.e("Error", e.getMessage());
				e.printStackTrace();
			}
			devolver nulo;

		}

		@Anular
		vacío protegido en PostExecute (argumentos vacíos) {

			for (int temp = 0; temp < nodelist.getLength(); temp++) {
				Nodo nNodo = nodelist.item(temp);
				if (nNode.getNodeType() == Node.ELEMENT_NODE) ​​{
					Elemento eElement = (Elemento) nNode;
					// Establecer los textos en TextViews desde nodos de elementos
					// Obtener el titulo
					textview.setText(textview.getText() + "Título: "
							+ getNode("título", eElement) + "n" + "n");
					// Obtener la descripción
					textview.setText(textview.getText() + "Descripción:"
							+ getNode("descripción", eElement) + "n" + "n");
					// Obtener el enlace
					textview.setText(textview.getText() + "Enlace:"
							+ getNode("enlace", eElement) + "n" + "n");
					// Obtener la fecha
					textview.setText(textview.getText() + "Fecha: "
							+ getNode("fecha", eElement) + "n" + "n" + "n"
							+ "n");
				}
			}
			// Cerrar barra de progreso
			pDialog.descartar();
		}
	}

	// funcion obtenerNodo
	Cadena estática privada getNode(String sTag, Element eElement) {
		NodeList nlList = eElement.getElementsByTagName(sTag).item(0)
				.getChildNodes();
		Nodo nValor = (Nodo) nlList.item(0);
		devuelve nValor.getNodeValue();
	}
}

Cuando se inicie la aplicación, esta actividad comenzará a descargar un objeto XML desde la dirección URL. Los objetos XML descargados se manipulan usando un DOM Parser y luego usan la función getNode para obtener los elementos. Luego llene TextViews con los nodos y elementos apropiados.

En este tutorial, alojamos un archivo XML en nuestro servidor. https://www.androidbegin.com/tutorial/XMLParseTutorial.xml

A continuación, cree un archivo XML para su diseño gráfico MainActivity. Vaya a  res  >  diseño  > Haga clic con el botón derecho en el  diseño  >  Nuevo  >  Archivo XML de Android

Nombre su nuevo archivo XML  activity_main.xml  y pegue el siguiente código.

actividad_principal .xml

<ScrollView xmlns_android="http://schemas.android.com/apk/res/android"
    android_layout_width="fill_parent"
    android_layout_height="fill_parent" >

    <RelativeLayout
        android_layout_width="wrap_content"
        android_layout_height="wrap_content" >

        <Vista de texto
            android_id="@+id/texto"
            android_layout_width="wrap_content"
            android_layout_height="wrap_content"
            android_layout_centerHorizontal="verdadero"
            android_layout_centerVertical="verdadero" />
    </RelativeLayout>

</Vista de desplazamiento>

A continuación, cambie el nombre de la aplicación. Abra su  strings.xml  en su carpeta  res > valores  y pegue el siguiente código.
cadenas.xml

<recursos>

    <string name="app_name">Tutorial XMLParse</string>
    <string name="hello_world">¡Hola mundo!</string>
    <string name="menu_settings">Configuración</string>

</recursos>

En su  AndroidManifest.xml , debemos declarar un permiso para permitir que la aplicación se conecte a Internet. Abra su  AndroidManifest.xml  y pegue el siguiente código.

Manifiesto de Android. xml

<manifiesto xmlns_android="http://schemas.android.com/apk/res/android"
    paquete="com.androidbegin.xmlparsetutorial"
    android_versionCode="1"
    android_versionName="1.0" >

    <usos-sdk
        android_minSdkVersion="8"
        android_targetSdkVersion="15" />

    <usos-permiso android_name="android.permiso.INTERNET" >
    </usos-permiso>

    <aplicación
        android_icono="@dibujable/ic_launcher"
        android_etiqueta="@cadena/nombre_aplicación"
        android_tema="@estilo/AppTheme" >
        <actividad android_name=".MainActivity" >
            <intent-filter>
                <acción android_name="android.intent.action.MAIN" />

                <categoría android_name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </actividad>
    </aplicación>

</manifiesto>

Producción:

Capturas de pantalla del tutorial XMLParse

Código fuente 

[purchase_link id=”7886″ text=”Comprar para descargar el código fuente” style=”button” color=”green”]