2010-06-27 99 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

相关问题