代码之家  ›  专栏  ›  技术社区  ›  Rengers

使用TouchXML解析SO RSS提要,未找到<entry>标记

  •  3
  • Rengers  · 技术社区  · 16 年前

    我试图解析一个特定问题的堆栈溢出RSS提要: https://stackoverflow.com/feeds/question/2110875

    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语句应该返回提要中所有条目的计数。在这种情况下,它应该是“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
    

    但使用它似乎有点黑客(可能是),并引入了一些其他零星的bug。

    据我所知,Xpath表达式是正确的。我已经用电脑检查过了 this 佩奇也是。

    谁能帮我解决这个问题,或者给我指出正确的方向。

    2 回复  |  直到 9 年前
        1
  •  2
  •   ivanTheTerrible    16 年前

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

    一个简单的方法就是改变

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

    被简单的

    <html>
    

    xPath现在可以工作了。

        2
  •  0
  •   Stefan Arentz    16 年前

    error 论据 nodesForXPath:error 看看它是否返回错误?检查一下 allEntries 不是 nil