如何获取具有特定元素值的节点

时间:2010-06-27 00:47:42

标签: xml xpath nsxmlparser nodes touchxml

有人可以告诉我我们如何使用文本功能 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];

但这没有成功。有人可以让我知道我是怎么回事 这样做。

由于

2 个答案:

答案 0 :(得分:2)

  

但我想使用文字功能

 NSString *libName = @"Hillman Library";  
 resultNodes = [rssParser nodesForXPath:@"//Library[LibraryName/text() = libName]/Hours/TermOrHolidays" error:nil]; 
     

但这没有成功

问题在于

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

选择文档中的所有Library元素,其中一个文本节点子元素等于同一个libName的{​​{1}}子元素之一。

引用的XML文档中的Library元素没有任何Library子元素,这就是上述XPath表达式不选择任何内容的原因。

你想要

libName

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

可以使用引号或撇号。

在XPath表达式中,通过用引号或撇号包围字符串来指定字符串。 XPath不了解其托管语言的变量。

答案 1 :(得分: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