Tutorial de análisis XML simple de Android usando DOM
Última actualización: 25 de marzo de 2013
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:
Código fuente
[purchase_link id=”7886″ text=”Comprar para descargar el código fuente” style=”button” color=”green”]