Il existe un million d'analyseurs XML différents pour l'iPhone. J'ai un fichier XML de taille moyenne qui contient beaucoup de balises en double (à différents points de la hiérarchie). Je pensais à TBXML mais j'étais préoccupé par son manque de support XPath. Par exemple, disons que mon fichier XML ressemblait à ceci.
<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>
Fondamentalement, mes exigences sont que je dois pouvoir extraire ce cdata. Et sachez si c'est l'auteur du blog un auteur de commentaires.
Meilleure comparaison que j'ai vue sur le sujet:
http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project
La différence entre les analyseurs les plus lents et les plus rapides dans son cas était un facteur de 2. Selon vos besoins en fonctionnalités, il existe certainement des analyseurs qui peuvent réduire de moitié votre temps d'analyse.
Découvrez RaptureXML . Ce n'est pas un comportement XPath officiel, mais c'est assez proche. Votre requête serait:
[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);
}
}];
MISE À JOUR: RaptureXML prend désormais en charge XPath!
Vous devriez regarder ces bibliothèques, dans l'ordre :)
Ono a le cool AFOnoResponseSerializer qui peut être intégré à AFNetworking
J'ai créé ce nouvel analyseur XML simple et léger pour iOS dans Swift - AEXML
Vous pouvez l'utiliser pour lire des données XML comme ceci:
let someValue = xmlDocument["element"]["child"]["anotherChild"].value
ou vous pouvez l'utiliser pour créer une chaîne XML comme ceci:
let document = AEXMLDocument()
let element = document.addChild("element")
element.addChild("child")
document.xmlString // returns XML string of the entire document structure
J'espère que ce sera utile pour quelqu'un.
Comme vous avez besoin de XML de taille moyenne
TinyXML pourrait être un bon choix pour les documents de taille moyenne si vous avez déjà de l'expérience avec l'API et êtes à l'aise avec C car il se connecte assez facilement à l'iPhone.