使用TouchXML解析SO RSS提要,找不到<entry>标签</entry>

时间:2010-02-03 18:28:23

标签: iphone xml rss xml-parsing touchxml

我正在尝试解析特定问题的Stack Overflow RSS提要: https://stackoverflow.com/feeds/question/2110875

为此我正在使用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页面进行了检查。

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

感谢。

2 个答案:

答案 0 :(得分:2)

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

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

更简单的方法就是改变

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

简单地替换为

<html>

和xPath现在有效。

答案 1 :(得分:0)

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

相关问题