解析使用TouchXML SO RSS提要,没有标签发现

问题描述:

我试图解析一个具体问题的堆栈溢出RSS提要: https://stackoverflow.com/feeds/question/2110875解析使用TouchXML SO RSS提要,没有<entry>标签发现

对于这个我使用TouchXML库。似乎是在下面的代码中的问题:

CXMLDocument *parser = [[CXMLDocument alloc] initWithData:sourceData options:0 error:nil]; 
NSArray *allEntries = [parser nodesForXPath:@"//entry" error:nil]; 
NSLog(@"Found entries: %d",[allEntries count]); //Returns 0 

该声明的NSLog应该返回所有条目的计数的Feed中的在这种情况下,它应该是“3”,问题是,它返回0。

我发现这段代码做的工作:

CXMLDocument *preParser = [[CXMLDocument alloc] initWithData:sourceData options:0 error:nil]; 
NSString *sourceStringUTF8 = [preParser XMLString]; 
[preParser release]; 

CXMLDocument *parser = [[CXMLDocument alloc] initWithData:[sourceStringUTF8 dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]; 
NSArray *allEntries = [parser nodesForXPath:@"//entry" error:nil]; 
NSLog(@"Found entries: %d",[allEntries count]); //Returns 3, which is ok 

但是使用这个似乎哈克(大概是),并介绍其他一些零星的错误。

据我所知,Xpath表达式是正确的。我也使用this页面进行了检查。

任何人都可以帮助我解决这个问题,或者指出我在正确的方向。

谢谢。

我有一个非常类似的问题。这与xml命名空间有关,TouchXML不支持很好的(已知问题)。

我相信在你的黑客中,命名空间并没有传递到第二个解析器,这就是它的工作原理。

一个更简单的方法就是改变

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 

换成简单

<html> 

和XPath现在的作品。

也许从实际使用error参数到nodesForXPath:error来查看它是否返回错误?并在拨打电话后检查allEntries是不是nil

+0

我记录了一条错误消息,它是空的,所以没有错误。问题在于TouchXML根本不会为Xpath语句返回任何节点,而AFAIK只需找到它们即可。 – Rengers 2010-02-03 18:34:01