2009-01-02 19 views

Respuesta

58

NSXMLParser es un analizador SAX, lo que significa que los pasos a través del documento XML, y le informa (a través de métodos de delegado) de varios eventos (como el inicio de un nodo XML, la búsqueda de atributos, etc). Este tipo de procesamiento XML es el mejor para analizar documentos enormes, y cuando solo necesita recuperar una pequeña cantidad de datos de un archivo grande.

En contraste con SAX es el modelo DOM, donde todo el árbol XML se analiza en la memoria (generalmente con una sola llamada), y luego puede explorar libremente el documento XML de la API presentada. En general, es mucho más fácil trabajar con esto, ya que obtiene acceso aleatorio a todo el documento xml.

Así que la primera pregunta que uno debe responder es la pregunta SAX vs DOM. Si está trabajando con grandes archivos XML (digamos 10 MB o más), es posible que desee seguir con SAX. Si está trabajando con pequeños archivos XML o pequeños fragmentos XML, a menudo es mucho más fácil usar DOM.

Si de hecho decides ir con DOM, tienes algunas opciones.

libxml2 es una API muy potente escrita en C. Es principalmente para el uso de estilo DOM, pero tiene otras opciones si tiene experiencia con ella. Pero, como está escrito en C, no suele ser atractivo para aquellos que están más familiarizados con Objective-C (objetos y autorrelease), o aquellos que vienen del mundo de .Net. Por lo tanto, existe una necesidad/deseo de un contenedor nativo Objective-C alrededor de libxml para hacerlo más familiar. TouchXML es uno de esos envoltorios. Funciona bien si solo necesita acceso de lectura al XML. Si desea modificar el XML, o crear fragmentos/documentos XML desde cero, le recomiendo que vaya con KissXML.

+3

Hey Robbie, TouchXML tiene soporte para escribir XML. – schwa

+0

Hola Robbie, ¿Puedes mirar esta [Declaración de 'xmlKeepBlanksDefault' debe importarse desde el módulo 'libxml2.parser' antes de que se requiera] (https://stackoverflow.com/questions/48501624/declaration-of-xmlkeepblanksdefault- must-be-imported-from-module-libxml2-pars) –

14

Ver XML Tutorial for iOS: How To Choose The Best XML Parser for Your iPhone Project:

Hay un montón de opciones cuando se trata de analizar XML en el iPhone. El iPhone SDK viene con dos bibliotecas diferentes para elegir, y hay varias bibliotecas populares de terceros disponibles como TBXML, TouchXML, KissXML, TinyXML y GDataXML. ¿Cómo puede un desarrollador elegir el mejor analizador XML para su proyecto?

Recientemente he echado un vistazo a las diversas opciones que existen, y terminé extendiendo la muestra de XMLPerformance de Apple para probar cada una de las bibliotecas anteriores a fin de conocer cómo funcionaban y comparar su rendimiento. Pensé en compartir lo que he aprendido hasta ahora con otros que podrían estar buscando la mejor biblioteca XML para su proyecto de iPhone.

En este tutorial en XML daremos una comparación detallada de las características y el rendimiento de las bibliotecas de iPhone más populares, explicaremos cómo elegir entre ellas y daremos un ejemplo de proyecto que muestra cómo leer datos XML utilizando cada una de las anteriores bibliotecas ...

2

Hay otra buena biblioteca de análisis XML basado en bloques - RaptureXML (github) por ZaBlanc, que proporcionan API Objective-C en la parte superior de libxml2, sin duda recomiendo probarlo.