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