xmlparser online ios xml parsing sdk

ios - online - xmlparser laravel



Elegir el analizador XML de IOS correcto (6)

Hay un millón de analizadores XML diferentes para el iPhone. Tengo un archivo XML de tamaño mediano que contiene muchas etiquetas 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í.

<blog> <author> foo1 </author> <comments> <comment> <text> <![CDATA[ HTML code that must be extracted ]]> </text> <author>foo2</author> </comment> <comment> <text> <![CDATA[ Here is another post ]]> </text> <author>foo1</author> </comment> </comments> </blog>

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




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!


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.



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); }