2010-11-03 12 views
1

Existe-t-il un moyen d'obtenir un CXMLElement lorsque xpath interroge un document? L'élément XCMLNode renvoyé par le - (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error; ne contient pas les fonctions d'attributs.Comment obtenir CXMLElement lors de l'utilisation de xpath

Existe-t-il un moyen d'obtenir directement un élément ou de convertir le noeud en élément?

Merci

Répondre

4

Vous pouvez lancer, mais assurez-vous de vérifier le type premier:

for (CXMLNode *node in nodeArray) 
{ 
    if ([node kind] == CXMLElementKind) 
    { 
     CXMLElement *element = (CXMLElement *)node; 

     // do stuff with element 
    } 
} 
0

AFAIR CXMLElement est une sous-classe de la CXMLNode. Si vous êtes sûr que xpath retournera CXMLElements, il vous suffit de convertir CXMLNode en CXMLElement. Dans un autre cas, vous devez vérifier le type de noeud, puis lancer.

De touchXML documention:

NSArray *nodes = NULL; 
// searching for piglet nodes 
nodes = [doc nodesForXPath:@"//piglet" error:nil]; 

for (CXMLElement *node in nodes) { 
... 
} 
+0

En fait, je regardais une source, et le CXMLNode est créé dans la fonction lui-même, donc ce n'est pas un CXMLElement ... – sharvey

+0

https://github.com/schwa/TouchXML/blob/master/Documentation/TouchXMLParsing.markdown – Yuras