0

我正在尝试解析 YouTube 数据 API 提供的 YouTube 提要。此提要列出了特定用户上传的所有视频,例如:https ://gdata.youtube.com/feeds/api/users/google/uploads?v=2

我在我的 iOS 应用程序中使用 touchXML。我尝试<entry>使用 CXMLDocument 中的 nodesForXPath 函数收集所有节点。

NSURL *url = [NSURL URLWithString: newsFeedUrl];
CXMLDocument *feedParser = [[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil];
NSArray *resultNodes = [feedParser nodesForXPath:@"//entry" error:nil];
NSLog(@"%@",resultNodes.count); // >>> return (null)

但是这个查询不返回任何东西。我检查了 xpath 语法;我不认为这是错的。

4

1 回答 1

0

我发现了这个问题。它是关于 Xpath 和命名空间的。为了使用 xpath 解析 XML 文档,我必须为我想要支持的每个命名空间创建一个默认映射。

NSDictionary * maps = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"http://www.w3.org/2005/Atom",@"http://search.yahoo.com/mrss/",@"http://a9.com/-/spec/opensearch/1.1/",@"http://schemas.google.com/g/2005",@"http://gdata.youtube.com/schemas/2007",@"W/\"C08MQXg-cSp7I2A9WhJRFEs.\"",nil] forKeys:[NSArray arrayWithObjects: @"ns",@"media",@"openSearch",@"gd",@"yt",@"etag",nil]];
NSArray *resultNodes = [feedParser nodesForXPath:@"//ns:entry" namespaceMappings:maps error:nil];

更多关于TouchXML的解释。我发现了一篇关于GDataXML的帖子,它可能很有用。

于 2012-07-17T23:57:33.680 回答