2010-06-27 95 views
0

有人請告訴我如何使用 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]; 

但是這並不奏效。有人可以讓我知道我是如何去做這件事的。

由於

+0

嗨,阿卜杜勒。歡迎來到SO。突出顯示代碼並按下ctrl-k以正確格式化。 – bernie 2010-06-27 00:50:39

回答

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

的問題是,

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

選擇文檔的文本的子節點中的一個在所有Library元件,其是等於所述一個libName同樣的孩子Library

引用的XML文檔中的Library元素沒有任何libName子元素,這就是上述XPath表達式不選擇任何內容的原因。

你想

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

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

無論引號或撇號都可以使用。

在XPath表達式中,通過用引號或撇號包圍它來指定字符串。 XPath不理解其託管語言的變量。

0

啊..感謝那個Dimitre ......它解決了。 就像你說的XPath不理解其託管語言的變量。所以我可以連接並形成一個XPath查詢然後使用它。

​​

我是新來的C-目標,還在掙扎與簡單的概念enter code here

+0

我嘗試過使用這個,但徒勞無功。得到一些錯誤。 NSString * string1 = @「// LibraryName [text()='」; \t NSString * string2 = @「']/../小時/ TermOrHolidays「; \t的NSString * newString; \t的NSString * newString1; \t newString = [字符串1 stringByAppendingString:LIBNAME]; \t newString1 = [newString stringByAppendingString:字符串2]; \t的NSLog(newString1); \t//更正下面的一個: \t // resultNodes = [rssParser nodesForXPath:@「// LibraryName [text()='Engineering Library'] /../ Hours/TermOrHolidays」error:nil]; resultNodes = [rssParser nodeForXPath:newString1誤差:無]; – 2010-06-27 10:10:09

相關問題