<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mobile development &#187; XML</title>
	<atom:link href="http://mobile.davidocs.com/tag/xml/feed/" rel="self" type="application/rss+xml" />
	<link>http://mobile.davidocs.com</link>
	<description>Building Android and iPhone applications from scratch</description>
	<lastBuildDate>Wed, 30 Sep 2009 08:54:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
<link>http://mobile.davidocs.com</link>
<url>http://mobile.davidocs.com/wp-content/mbp-favicon/android-wallpaper4_1024x768.png</url>
<title>mobile development</title>
</image>
		<item>
		<title>Tratamiento de ficheros XML con Android</title>
		<link>http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/</link>
		<comments>http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 13:32:51 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[SAXParser]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.tech-xperience.com/mobiledev/?p=159</guid>
		<description><![CDATA[Una de las muchas funciones interesantes que nos ofrece Android es poder leer datos de un fichero XML. A simple vista puede parecer algo bastante trivial, pero sin éstos métodos hay una gran cantidad de informacion en Internet que no podremos obtener. [tweetmeme]
Gracias a métidos como SAXParser (SAX es la abreviatura de Simple API para [...]


Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/' rel='bookmark' title='Permanent Link: Cómo añadir iconos a un ListView en Android'>Cómo añadir iconos a un ListView en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/google-maps-con-threads/' rel='bookmark' title='Permanent Link: Google Maps con Threads'>Google Maps con Threads</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">Una de las muchas funciones interesantes que nos ofrece Android es poder leer datos de un fichero <strong>XML</strong>. A simple vista puede parecer algo bastante trivial, pero sin éstos métodos hay una gran cantidad de informacion en Internet que no podremos obtener. [tweetmeme]</p>
<p>Gracias a métidos como <a href="http://developer.android.com/reference/javax/xml/parsers/SAXParser.html" target="_blank">SAXParser</a> (<em>SAX</em> es la abreviatura de <strong>Simple API para XML</strong>) podremos leer contenido de un fichero <em>XML </em>para después tratarlo a nuestro antojo.</p>
<p><span style="color: #008000;"><strong><span style="font-size: medium;">¿Qué es esto?</span></strong></span></p>
<p>En éste tutorial vamos a leer contenido de un fichero <em>XML </em>y lo mostraremos por pantalla.</p>
<p><span style="font-size: medium;"><span style="color: #008000;"><strong>¿Qué voy a aprender?</strong></span></span></p>
<ul>
<li>Obtener datos de ficheros <em>XML </em>en la red.</li>
<li>Recorrer ficheros <em>XML</em>.</li>
</ul>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">¿Cómo quedará?</span></span></strong></p>
<p style="text-align: center;"><strong><span style="font-size: medium;"><span style="color: #008000;"><img class="size-full wp-image-170 aligncenter" title="tuto3-1" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/08/tuto3-1.jpg" alt="tuto3-1" width="325" height="601" /><br />
</span></span></strong></p>
<p><span id="more-159"></span><strong><span style="font-size: medium;"><span style="color: #008000;">Pasos a seguir:</span></span></strong></p>
<p>Como veis a nivel visual se trata de una aplicación muy sencilla, la información que leamos del <em>XML </em>la mostraremos por pantalla mediante un <em>TextView</em>. No es necesario modificar el fichero <em>main.xml, </em>mostraremos el texto al vuelo.</p>
<p>Para poder tratar un fichero XML primero debemos conocer su estructura, en nuestro caso se trata de un simple fichero que incluye los datos de una ubicación:</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">ejemplo.xml:</span></span></strong></p>
<pre class="brush: xml;">

&lt;ejemplo&gt;
&lt;titulo&gt;Mobile Development&lt;/titulo&gt;
&lt;valoracion&gt;4&lt;/valoracion&gt;
&lt;distancia&gt;6.7762437412613&lt;/distancia&gt;
&lt;coordenadas&gt;40.4784,-3.71233&lt;/coordenadas&gt;
&lt;telefono&gt;91 386 2393&lt;/telefono&gt;
−&lt;cireccion&gt;
&lt;calle&gt;Paseo Maritimo Rafael de Casanovas&lt;/calle&gt;
&lt;numero numerodecalle=&quot;7&quot;/&gt;
&lt;ciudad&gt;Tarragona&lt;/ciudad&gt;

&lt;categoria lang=&quot;Programacion&quot;&lt;/title&gt;

&lt;/categoria&gt;&lt;/cireccion&gt;&lt;/ejemplo&gt;
</pre>
<p>Para poder leer los datos del fichero <em>XML </em>necesitamos un <a href="http://developer.android.com/reference/org/xml/sax/XMLReader.html" target="_blank">XMLReader</a> y un <a href="http://developer.android.com/reference/java/net/ContentHandler.html" target="_blank">ContentHandler</a>. El <em>XMLReader</em> es quien se encarga de leer los datos (un punto para el ingeniero) y el <em>ContentHandler </em>es quien le dice al <em>XMLReader </em>como tratar esos datos.</p>
<p>Lo que vamos a hacer ahora es abrir la dirección URL donde está alojado el fichero, crearemos el <em>SAXParser</em>, le añadiremos un <em>ContentHandler</em>, pasaremos los datos desde la URL y los mostraremos por pantalla.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">ParsingXML.java:</span></span></strong></p>
<pre class="brush: java;">

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

/* Create a new TextView to display the parsingresult later. */
TextView tv = new TextView(this);
try {

/* URL desde donde leeremos los datos. */

String URL_Test = &quot;http://www.tech-xperience.com/mobiledev/places.xml&quot;;
URL url = new URL(URL_Test);

/* Creamos un SAXParser. */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();

/* Cogemos el XMLReader del SAXParser que hemos creado. */
XMLReader xr = sp.getXMLReader();
/* Creamos un nuevo ContentHandler y lo aplicamos al XML-Reader*/
XMLHandler myXMLHandler = new XMLHandler();
xr.setContentHandler(myXMLHandler);

/* Tratamos los datos del URL. */
xr.parse(new InputSource(url.openStream()));
/* Acaba el tratamiento. */

/* Ponemos los datos por pantalla con el XMLHandler. */
ParsedXMLDataSet parsedExampleDataSet = myXMLHandler.getParsedData();

/* Set the result to be displayed in our GUI. */
tv.setText(parsedExampleDataSet.toString());

} catch (Exception e) {
/* Mostramos el Error. */
tv.setText(&quot;Error: &quot; + e.getMessage());
Log.e(MY_DEBUG_TAG, &quot;XMLQueryError&quot;, e);
}
/* Display the TextView. */
this.setContentView(tv);
}
</pre>
<p>La siguiente clase que definiremos es el <em>ContentHandler</em>, en nuestro caso un <strong>SAX-Handler</strong> que se ocupará de recorrer el archivo <em>XML</em>.</p>
<p>Cuando se encuentre con <strong>tag de apertura</strong> como,
<pre class="brush: xml;">&lt;ejemplo&gt;</pre>
<p> se  ejecutará la funcion del Handler:</p>
<pre class="brush: java;">

public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {}
</pre>
<p>Lo mismo ocurre al encontrarse con un <strong>tag de cierre</strong> como,
<pre class="brush: xml;">&lt;/ejemplo&gt;</pre>
<p> se  <strong>ejecutará</strong> la funcion del Handler:</p>
<pre class="brush: java;">

@Override
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {}
</pre>
<p>Para <strong>leer los datos</strong> dentro de un tag como el anterior debemos usar la función:</p>
<pre class="brush: java;">

@Override
public void characters(char ch[], int start, int length)}
</pre>
<p>En caso de que el <strong>contenido </strong>que queremos leer se encuentre de ésta manera</p>
<pre class="brush: xml;">

&lt;numero numerodecalle=&quot;7&quot;/&gt;
</pre>
<p>Deberemos acceder a él dentro de la función <strong>startElement</strong></p>
<pre class="brush: java;">

public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {}
</pre>
<p>Visto así no parece muy claro, veamos el código completo para entenderlo mejor.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">XMLHandler.java:</span></span></strong></p>
<pre class="brush: java;">

package com.mobiledev;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class XMLHandler extends DefaultHandler{

// ===========================================================
// Campos
// ===========================================================

@SuppressWarnings(&quot;unused&quot;)
private boolean in_ejemplo = false;
private boolean in_titulo = false;
private boolean in_valoracion = false;
private boolean in_distancia = false;
private boolean in_coordenadas = false;
private boolean in_telefono = false;
@SuppressWarnings(&quot;unused&quot;)
private boolean in_direccion = false;
@SuppressWarnings(&quot;unused&quot;)
private boolean in_categoria = false;
private boolean in_calle = false;
@SuppressWarnings(&quot;unused&quot;)
private boolean in_numero = false;
private boolean in_ciudad = false;

private ParsedXMLDataSet myParsedXMLDataSet = new ParsedXMLDataSet();

// ===========================================================
// Getter &amp; Setter
// ===========================================================

public ParsedXMLDataSet getParsedData() {
return this.myParsedXMLDataSet;
}

// ===========================================================
// Metodos
// ===========================================================
@Override
public void startDocument() throws SAXException {
this.myParsedXMLDataSet = new ParsedXMLDataSet();
}

@Override
public void endDocument() throws SAXException {
// No hacemos nada
}

/** Se ejecuta cuando encuentra tags como:
* &lt;tag&gt;
* Puede leer atributos cuando se encuentra con:
* &lt;/tag&gt;&lt;tag attribute=&quot;attributeValue&quot;&gt;*/
@Override
public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {
if (localName.equals(&quot;ejemplo&quot;)) {
this.in_ejemplo = true;
}else if (localName.equals(&quot;titulo&quot;)) {
this.in_titulo = true;
}else if (localName.equals(&quot;valoracion&quot;)) {
this.in_valoracion = true;
}else if (localName.equals(&quot;distancia&quot;)) {
this.in_distancia = true;
}else if (localName.equals(&quot;coordenadas&quot;)) {
this.in_coordenadas = true;
}else if (localName.equals(&quot;telefono&quot;)) {
this.in_telefono = true;
}else if (localName.equals(&quot;direccion&quot;)) {
this.in_direccion = true;
}else if (localName.equals(&quot;calle&quot;)) {
this.in_calle = true;
}else if (localName.equals(&quot;numero&quot;)) {
// Extraemos el atributo
String attrValue = atts.getValue(&quot;numerodecalle&quot;);
int i = Integer.parseInt(attrValue);
myParsedXMLDataSet.setNumCalle(i);
}else if (localName.equals(&quot;ciudad&quot;)) {
this.in_ciudad = true;
}else if (localName.equals(&quot;categoria&quot;)) {
// Extraemos el atributo
String attrValue = atts.getValue(&quot;lang&quot;);
myParsedXMLDataSet.setCategoria(attrValue);
}
}
/** Se ejecuta en tags de cierre:
* &lt;/tag&gt; */
@Override
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
if (localName.equals(&quot;ejemplo&quot;)) {
this.in_ejemplo = false;
}else if (localName.equals(&quot;titulo&quot;)) {
this.in_titulo = false;
}else if (localName.equals(&quot;valoracion&quot;)) {
this.in_valoracion = false;
}else if (localName.equals(&quot;distancia&quot;)) {
this.in_distancia = false;
}else if (localName.equals(&quot;coordenadas&quot;)) {
this.in_coordenadas = false;
}else if (localName.equals(&quot;telefono&quot;)) {
this.in_telefono = false;
}else if (localName.equals(&quot;direccion&quot;)) {
this.in_direccion = false;
}else if (localName.equals(&quot;calle&quot;)) {
this.in_calle = false;
}else if (localName.equals(&quot;numero&quot;)) {
this.in_numero = false;
}else if (localName.equals(&quot;ciudad&quot;)) {
this.in_ciudad = false;
}else if (localName.equals(&quot;categoria&quot;)) {
this.in_categoria = false;
}
}
/** Se ejecuta cuando se encuentra con la siguiente estructura:
* &lt;tag&gt;characters&lt;/tag&gt; */
@Override
public void characters(char ch[], int start, int length) {
if(this.in_titulo){
myParsedXMLDataSet.setTitulo(new String(ch, start, length));
}
if(this.in_valoracion){
myParsedXMLDataSet.setValoracion(new String(ch, start, length));
}
if(this.in_distancia){
myParsedXMLDataSet.setDistancia(new String(ch, start, length));
}
if(this.in_coordenadas){
myParsedXMLDataSet.setCoordenada(new String(ch, start, length));
}
if(this.in_telefono){
myParsedXMLDataSet.setTelefono(new String(ch, start, length));
}
if(this.in_calle){
myParsedXMLDataSet.setCalle(new String(ch, start, length));
}
if(this.in_ciudad){
myParsedXMLDataSet.setCiudad(new String(ch, start, length));
}
}
}
</pre>
<p>En la función <strong>characters</strong> se llama a las funciones que pasan los datos del <em>Reader</em> a la clase donde almacenamos los datos leidos, en éste caso, <em>ParsedXMLDataSet</em>.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">ParsedXMLDataSet.java:</span></span></strong></p>
<pre class="brush: java;">

package com.mobiledev;

public class ParsedXMLDataSet {

private String Titulo = null;
private String Valoracion = null;
private String Distancia = null;
private String Coordenada = null;
private String Telefono = null;
private int NumCalle = 0;
private String Calle = null;
private String Ciudad = null;
private String Categoria = null;

// ===========================================================
// Getter &amp;amp;amp;amp;amp;amp;amp; Setter
// ===========================================================

public String getTitulo() {
return Titulo;
}
public void setTitulo(String extractedString) {
this.Titulo = extractedString;
}
public String getValoracion() {
return Valoracion;
}
public void setValoracion(String extractedString) {
this.Valoracion = extractedString;
}
public String getDistancia(){
return Distancia;
}
public void setDistancia(String extractedString){
this.Distancia = extractedString;
}
public String getCoordenada() {
return Coordenada;
}
public void setCoordenada(String extractedString) {
this.Coordenada = extractedString;
}
public String getTelefono() {
return Telefono;
}
public void setTelefono(String extractedString) {
this.Telefono = extractedString;
}
public int getNumCalle() {
return NumCalle;
}
public void setNumCalle(int extractedInt) {
this.NumCalle = extractedInt;
}
public String getCalle() {
return Calle;
}
public void setCalle(String extractedString) {
this.Calle = extractedString;
}
public String getCiudad() {
return Ciudad;
}
public void setCiudad(String extractedString) {
this.Ciudad = extractedString;
}
public String getCategoria() {
return Calle;
}
public void setCategoria(String extractedString) {
this.Categoria = extractedString;
}
public String toString(){
return &quot;Establecimiento = &quot; + this.Titulo
+ &quot;\nValoracion = &quot; + this.Valoracion
+ &quot;\nDistancia = &quot; + this.Distancia
+ &quot;\nCoordenadas = &quot; + this.Coordenada
+ &quot;\nTelefono = &quot; + this.Telefono
+ &quot;\nNumCalle = &quot; + this.NumCalle
+ &quot;\nCalle = &quot; + this.Calle
+ &quot;\nCiudad = &quot; + this.Ciudad
+ &quot;\nCategoria = &quot; + this.Categoria;

}
}
</pre>
<p>Ésta clase proporciona los métodos para recoger los datos del <em>XML </em>y un método que devuelve los valores que contiene. Éste metodo es el que se llama después de leer datos desde la clase principal y muestra los datos en el <em>TextView. </em>[tweetmeme]<em><br />
</em>
</p>
<p style="text-align: center;"><img class="size-full wp-image-170 aligncenter" title="tuto3-1" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/08/tuto3-1.jpg" alt="tuto3-1" width="325" height="601" /></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Código fuente: </span></span></strong></p>
<p><table style="border: 1px solid #CCC;" cellpadding="3" width="100%">
  <tr>
    <td width="35">
      <img src="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif" alt="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif">
    </td>
    <td>
      <b>download:</b> <a href="http://mobile.davidocs.com/?file_id=4">ParsingXML</a> <small>(34.39KB)</small><br />
      <b>added:</b> 07/08/2009 <br />
      <b>clicks:</b> 246 <br />
      <b>description:</b> Ejemplo de tratamiento de ficheros XML colgados en la red. <br />
    </td>
  </tr>
</table></p>
<p><span style="font-size: medium;"><span style="color: #008000;"><strong><br />
</strong></span></span></p>
<p><span style="color: #008000;"><strong><span style="font-size: medium;"><br />
</span></strong></span></p>



Comparte:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F&amp;t=Tratamiento%20de%20ficheros%20XML%20con%20Android" title="Facebook"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="Bitacoras.com"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="Meneame"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.it/vote?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="Wikio IT"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio IT" alt="Wikio IT" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F&amp;title=Tratamiento%20de%20ficheros%20XML%20con%20Android&amp;bodytext=Una%20de%20las%20muchas%20funciones%20interesantes%20que%20nos%20ofrece%20Android%20es%20poder%20leer%20datos%20de%20un%20fichero%20XML.%20A%20simple%20vista%20puede%20parecer%20algo%20bastante%20trivial%2C%20pero%20sin%20%C3%A9stos%20m%C3%A9todos%20hay%20una%20gran%20cantidad%20de%20informacion%20en%20Internet%20que%20no%20podremos%20obten" title="Digg"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F&amp;title=Tratamiento%20de%20ficheros%20XML%20con%20Android&amp;notes=Una%20de%20las%20muchas%20funciones%20interesantes%20que%20nos%20ofrece%20Android%20es%20poder%20leer%20datos%20de%20un%20fichero%20XML.%20A%20simple%20vista%20puede%20parecer%20algo%20bastante%20trivial%2C%20pero%20sin%20%C3%A9stos%20m%C3%A9todos%20hay%20una%20gran%20cantidad%20de%20informacion%20en%20Internet%20que%20no%20podremos%20obten" title="del.icio.us"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Tratamiento%20de%20ficheros%20XML%20con%20Android&amp;link=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="FriendFeed"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F&amp;t=Tratamiento%20de%20ficheros%20XML%20con%20Android" title="HackerNews"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="Technorati"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/' rel='bookmark' title='Permanent Link: Cómo añadir iconos a un ListView en Android'>Cómo añadir iconos a un ListView en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/google-maps-con-threads/' rel='bookmark' title='Permanent Link: Google Maps con Threads'>Google Maps con Threads</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
