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.
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.
http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project
Deberías mirar estas bibliotecas, en orden :)
- Ono , impulsado por libxml2
- XMLDictionary
- RaptureXML
Ono tiene el AFOnoResponseSerializer que se puede integrar con AFNetworking
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.
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.
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);
}