将HTML <Tag>解析为ios

Pra*_*mar 5 html iphone html5 ipad ios

我正在使用Hpple将HTML标记解析到iOS.我能够解析HTML标签所在的数据

 <div id="NewsPageSubTitle">
         <p><**span** hi how are you>
Run Code Online (Sandbox Code Playgroud)

使用ios代码:

NSString *tutorialsXpathQueryString = @"//div[@id='NewsPageArticle']/p/span ";
 NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];
Run Code Online (Sandbox Code Playgroud)

但在少数情况下我没有span,imean html中的字符串可以通过标签"p"直接访问:

<div id="NewsPageSubTitle">
             <p>< hi how are you>
Run Code Online (Sandbox Code Playgroud)

这里我使用ios代码:

NSString *tutorialsXpathQueryString = @"//div[@id='NewsPageArticle']/p ";
     NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];
Run Code Online (Sandbox Code Playgroud)

但在这里,我得到一个空白的数据作为回应.

任何人都可以让我知道如何解决问题?

Vin*_*tia 2

由于有时 para 标签有跨度,有时没有,我建议尝试通过循环子项来处理这个问题

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    NSData  * data      = [NSData dataWithContentsOfFile:filePath];
    TFHpple * tutorialsParser       = [[TFHpple alloc] initWithHTMLData:data];

    NSString *tutorialsXpathQueryString = @"//div[@id='NewsPageSubTitle']";
    NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];

    for (TFHppleElement * element in tutorialsNodes) {
        NSLog(@"%@", element);
        NSLog(@"%@", [element tagName]);
        NSLog(@"%@", [element attributes]);
        NSLog(@"%@", [element children]);
        for (TFHppleElement *childElement in [element children]) {
                NSLog(@"%@", childElement);
        }
    }
Run Code Online (Sandbox Code Playgroud)