Carlos Robles frikiblog

Elegir parser de XML en Android

| 0 comments

Como sabeis, en Android tenemos distintos parsers de XML disponibles. Primero el DOM de toda la vida. Luego esta el famoso PULL, que parece que es del que mejor se ha hablado, y por otro lado SAX. Para mi primer proyecto estuve un tiempo dandole vueltas, las ventajas de DOM es que se parece a otras cosas que todos hemos hecho antes, que la programacion es facil, y que tenemos todo disponible a la vez, para tirar de los datos que necesitemos cuando lo necesitemos. Las desventajas son que carga mucho la memoria, por lo que en runtime no es tan divertido. Ademas con archivos muy grandes es sencillamente inviable. En cuanto a Pull y Sax, ya se pueden decir mas cosas. En principio, aunque nos cueste mas afrontarlo, los dos son mas recomendables que DOM. Nos cuesta mas poruqe la extraccion es secuencial asique hay que currarse mas la programacion, pero optimiza muchisimo en runtime. Y cual elegir? Bien, respuesta rapida: Elige siempre SAX Decidirlo y defenderlo podria ser complicado, por suerte tenemos a la buena gente de developer.com, que ha hecho el trabajo por nosotros. Podemos ver el artículo aqui: http://www.developer.com/ws/article.php/10927_3824221_2/Android-XML-Parser-Performance.htm Han hecho varias pruebas y basicamente viene a decir dos cosas: cuando el archivo es grande, la velocidad es notablemente mas rapida, y cuanto mas grande es, mas diferencia hay. Ademas, el numero de registros procesados por segundo (parecido a lo anterior, pero no lo mismo) tambien es bien diferente. Sigue ganando SAX, aunque para archivos muy muy grandes, el rendimiento de sax va bajando y el de pull va subiendo, pero esto seria para archivos mas grandes de los que realmente se usaran en un movil para casi cualquier caso. En conclusion, que cuando tengais que parsear un xml en android, vayais siempre directamente a SAX. Es muy sencillo y hay muchos ejemplos por ahi. De todas formas si un dia me animo, tal vez ponga alguno mio.

Facebook Twitter Linkedin Plusone Digg Delicious Reddit Email

Leave a Reply

Required fields are marked *.