2010-10-14 5 views
0

Je recherche une page HTML et essaie d'afficher son contenu dans une vue de table. À la suite de la documentation que j'ai essayé NSXMLDocument et NSXmlParser mais n'a pas pu obtenir l'un d'eux pour me donner les données de retour :-(Utilisation de XPath pour filtrer le code HTML en fonction de la valeur de la classe

La page que je suis en train de la ferraille est http://www.instapaper.com/u

Le code que je utilise est

NSXMLDocument * doc = [[NSXMLDocument alloc] 
         initWithXMLString: data 
         options: NSXMLDocumentTidyHTML 
         error: &error]; 
NSArray* rows = [doc nodesForXPath:@"//div[class='tableViewCell']" error:&error]; 

pour obtenir DIVs class = tableViewCell.

Si je recherche uniquement // div Je reviens un bon nombre d'entre eux, mais le filtrage par classe ne semble pas fonctionner :-(

Une idée de ce que je fais mal?

Merci pour toute aide, Miguel

+0

Copie possible de [Comment puis-je trouver un élément par classe CSS avec XPath?] (Https://stackoverflow.com/questions/1604471/how-can-i-find-an-element-by-css-class -with-xpath) – siegi

Répondre

7

Je suppose que vous essayez de filtrer l'attribut class? alors vous auriez besoin d'ajouter un @ à votre XPath:

//div[@class='tableViewCell'] 

encore, je ne peux pas trouver un div ayant cette classe?

+0

Merci beaucoup Dennis. Je pensais que j'avais essayé de cette façon ... mais il semble que j'ai fait quelque chose de mal quand je l'ai fait. Maintenant cela fonctionne parfaitement :-) – Michi

+0

Une autre question ... comment ferais-je si la valeur de l'attribut class est "tableViewCell someOtherClassValue"? À l'heure actuelle, il ne me restitue que les nœuds qui n'ont que tableViewCell comme valeur. – Michi

+4

vous pouvez utiliser // div [contains (string (@class), "tableViewCell")] –

Questions connexes