как получить узлы с определенным значением элемента - PullRequest
0 голосов
/ 27 июня 2010

Может кто-нибудь сказать, пожалуйста, как мы используем текстовую функцию в запросе XPath.Мне нужна была информация для Библиотеки Хиллмана, представленная в xml

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

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

, сейчас я использовал [1].Но я хотел использовать текстовую функцию

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

Но это не работает.Может кто-нибудь, пожалуйста, дайте мне знать, как я это делаю.

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 июня 2010

Но я хотел использовать текстовую функцию

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

Но это не получается

Проблема в том, что :

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

выделяет все элементы Library в документе, один из дочерних узлов текстового узла которого равен одному из libName дочерних элементов того же Library.

Элементы Library в указанном XML-документе не имеют дочерних элементов libName, и поэтому вышеприведенное выражение XPath ничего не выбирает.

Вы хотите :

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

или

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

Можно использовать как кавычки, так и апострофы.

В выражении XPath строка указывается, заключая ее в кавычки или апострофы.XPath не понимает переменных своего языка хостинга.

0 голосов
/ 27 июня 2010

Ах ... спасибо за этого Димитра ... Это сработало. Как вы сказали, XPath не понимает переменную своего языка хостинга. Поэтому я могу объединить и сформировать запрос XPath, а затем использовать его.

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];

Я новичок в С-объективе и все еще борюсь с простыми понятиями enter code here

...