Elegir el analizador XML de IOS correcto

Hay un millón de analizadores XML diferentes para el iPhone. Tengo un archivo XML de tamaño mediano que contiene muchas tags duplicadas (en diferentes puntos de la jerarquía). Estaba pensando en TBXML pero estaba preocupado por su falta de soporte XPath. Por ejemplo, digamos que mi archivo XML se veía así.

  foo1       foo2      foo1    

Básicamente mis requisitos son que necesito poder extraer esa cdata. Y saber si es el autor del blog un autor de comentarios.

La mejor comparación que he visto sobre el tema:

http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

La diferencia entre los analizadores más lentos y más rápidos en su caso fue un factor de 2. Dependiendo de los requisitos de su función, definitivamente hay analizadores que pueden reducir su tiempo de análisis a la mitad.

Echa un vistazo a RaptureXML . No es un comportamiento XPath oficial, pero es bastante cercano. Su consulta sería:

 [rxml iterate:@"comments.comment" with: ^(RXMLElement *e) { if ([[e child:@"author"].text isEqualToString:@"foo1"]) { NSLog(@"Blog Text is %@.", e.text); } else { NSLog(@"Comment Text is %@.", e.text); } }]; 

ACTUALIZACIÓN: ¡RaptureXML ahora es compatible con XPath!

Deberías mirar estas bibliotecas, en orden 🙂

  1. Ono , impulsado por libxml2
  2. XMLDictionary
  3. RaptureXML

Ono tiene el fantástico AFOnoResponseSerializer que se puede integrar con AFNetworking

Hice este nuevo analizador XML simple y liviano para iOS en Swift – AEXML

Puede usarlo para leer datos XML como este:

 let someValue = xmlDocument["element"]["child"]["anotherChild"].value 

o puede usarlo para construir cadenas XML como esta:

 let document = AEXMLDocument() let element = document.addChild("element") element.addChild("child") document.xmlString // returns XML string of the entire document structure 

Espero que sea útil para alguien.

Como tiene requisitos para XML de tamaño mediano

TinyXML podría ser una buena opción para documentos de tamaño mediano si ya tienes experiencia con la API y te sientes cómodo con C, ya que se conecta fácilmente al iPhone.

Para más información puede ir a través de este enlace

Recomendaría un analizador XML liviano llamado “CDXMLKit”. Puede encontrarlo en http://www.cdframeworks.com/product/cdxmlkit y es realmente fácil de usar.

Aquí hay algunos ejemplos de código del analizador:

 CDXMLDocument * document = [[CDXMLDocument alloc] initWithXMLURL:@"--url--"]; CDXMLNode * blog = [[document childrenWithName:@"blog"] firstObject]; NSString * blogAuthor = [[[blog childrenWithName:@"author"] firstObject] innerContent]; CDXMLNode * comments = [[blog childrenWithName:@"comments"] firstObject]; for(CDXMLNode * commentNode in comments.children) { NSString * commentAuthor = [[[commentNode childrenWithName:@"author"] firstObject] innerContent]; NSString * commentText = [[[commentNode childrenWithName:@"text"] firstObject] innerContent]; NSLog(@"%@: %@", commentAuthor, commentText); }