2012-07-17 119 views
0

我試圖解析YouTube數據API提供的YouTube Feed。此Feed列出了所有視頻uploaded by a specific user,與此類似:https://gdata.youtube.com/feeds/api/users/google/uploads?v=2Parse youtube api feed v2

我在iOS應用中使用了touchXML。我嘗試使用CXMLDocument中的nodesForXPath函數收集所有<entry>節點。

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語法;我不認爲這是錯的。

回答

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的信息可能非常有用。