0

有人可以告诉我我们如何在 XPath 查询中使用文本函数。我需要 xml 中的 Hillman Library 的信息

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

但这行不通。有人可以让我知道我是如何做到这一点的。

谢谢

4

2 回答 2

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

引用的 XML 文档中的Library元素没有任何子元素libName,这就是上面的 XPath 表达式什么都不选择的原因。

你想要

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

或者

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

可以使用引号或撇号。

在 XPath 表达式中,通过用引号或撇号将字符串括起来来指定字符串。XPath 不理解其宿主语言的变量。

于 2010-06-27T02:09:14.860 回答
0

啊..感谢那个 Dimitre ......它成功了。就像你说的 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];

我是 C-objective 的新手,但仍在为简单的概念而苦苦挣扎enter code here

于 2010-06-27T09:58:59.930 回答