2010-06-27 16 views
0

Pourrait-on me dire comment utiliser la fonction de texte dans la requête XPath . je avais besoin pour l'information présente Hillman Library dans le xmlcomment obtenir les nœuds avec la valeur d'élément spécifique

http://www.sis.pitt.edu/~arazeez/Librarydata.xml

resultNodes = [rssParser nodesForXPath:@"//Library[1]/Hours/TermOrHolidays" error:nil];. 

pour l'instant je le [1]. Mais je voulais utiliser la fonction texte

NSString *libName = @"Hillman Library"; 
resultNodes = [rssParser nodesForXPath:@"//Library[LibraryName/text() = libName]/Hours/TermOrHolidays" error:nil]; 

Mais ce ne fonctionne pas sur. Pourrait-on s'il vous plaît laissez-moi savoir comment je va faire cela.

Merci

+0

Salut, Abdul. Bienvenue à SO. Mettez en surbrillance le code et appuyez sur ctrl-k pour formater correctement. – bernie

Répondre

2

But I wanted to use the text function

NSString *libName = @"Hillman Library"; 
resultNodes = [rssParser nodesForXPath:@"//Library[LibraryName/text() = libName]/Hours/TermOrHolidays" error:nil]; 

But this is not working out

Le problème est que:

//Library[LibraryName/text() = libName]/Hours/TermOrHolidays

sélectionne tous Library éléments dans le document un des enfants texte nœud est égale à l'un des libName enfants de ce même Library.

Les éléments Library du document XML référencé n'ont aucun enfant libName, et c'est pourquoi l'expression XPath ci-dessus ne sélectionne rien.

Vous voulez:

//Library[LibraryName/text() = 'Hillman Library']/Hours/TermOrHolidays

ou

//Library[LibraryName/text() = "Hillman Library"]/Hours/TermOrHolidays

de guillemets ou apostrophes peuvent être utilisés.

Dans une expression XPath, une chaîne est spécifiée en l'entourant de guillemets ou d'apostrophes. XPath ne comprend pas les variables de son langage d'hébergement.

0

Ah ... merci pour ce Dimitre ... Ça a marché. Comme vous l'avez dit, XPath ne comprend pas la variable de sa langue d'hébergement. Donc je peux concaténer et former une requête XPath et ensuite l'utiliser.

NSString *libName = @"Engineering Library"; 
    NSMutableString *xpathquery = [[NSMutableString alloc] init]; 
    [xpathquery appendString:@"//Library[LibraryName/text() = '"]; 
    [xpathquery appendString:libName]; 
    [xpathquery appendString:@"']/../Hours/TermOrHolidays"]; 
    resultNodes = [rssParser nodesForXPath:xpathquery error:nil]; 

Je suis nouveau C-objectif et encore aux prises avec des concepts simples enter code here

+0

J'ai essayé d'utiliser cela aussi mais en vain. Obtenir une erreur. NSString * string1 = @ "// LibraryName [text() = '"; \t NSString * string2 = @ "']/../ Heures/TermOrHolidays "; \t NSString * nouvelleChaine; \t NSString * newString1; \t nouvelleChaine = [chaine1 stringByAppendingString: LIBNAME]; \t newString1 = [nouvelleChaine stringByAppendingString: string2]; \t NSLog (newString1); \t// correct un ci-dessous \t // resultNodes = [rssParser nodesForXPath: @ "// LibraryName [text() = 'Bibliothèque d'ingénierie'] /../ Heures/TermOrHolidays" erreur: néant]; resultNodes = [rssParser nodeForXPath: newString1 erreur: nul]; –