Как получить узлы с определенным значением элемента

Может кто-нибудь, пожалуйста, скажите мне, как мы используем текстовую функцию в запросе 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 ответа

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

 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 не понимает переменных своего языка хостинга.

Ах... спасибо за это Димитре... Это сработало. Как вы сказали, 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

Другие вопросы по тегам