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