html - Hpple,在 </span> 之后获取文本

标签 html ios parsing hpple

所以我认为这是我最后一个 Hpple 问题!我在 HTML 文档中找到了一个条目,我正在使用 Hpple 解析该条目。我尝试了很多不同的查询,但没有运气。以下是 HTML 示例。 HTML

我可以通过//div[@class = 'entry-content']/p 获得以“今天的项目”开头的文本。我还可以使用//div[@class = 'entry-content']//a[@title]//* 获取下一个标签及其后面的所有文本。但是,正如您所看到的,“/span”后面仍然有一些文本。但是,我尝试过的任何方法都行不通。我尝试查看元素的子元素,尝试//div[@class = 'entry-content']/p//text(),//div[@class = 'entry-content']/p//以下::*,没有任何效果。如果有人有任何想法,我洗耳恭听!再次感谢您的宝贵时间。

编辑 #1 当我尝试不同的事情时,我会查看 HTML。 p 标签下是我需要的文本,“今天的项目...”,然后有一个范围可以更改文本颜色并包括一个链接,后面是更多文本。我需要做的是跳过该跨度继续阅读文本。也许我的问题应该是,你如何跳过跨度?感谢您的浏览。

编辑 #2 好吧,我要开始悬赏这个。我真的需要一些帮助。我到处寻找并尝试了很多不同的东西。但没有什么对我有用。在那一个关闭的跨度之后我无法获取文本。而且这种格式经常出现。我正在为应用程序解析此博客的作者有时会更改她的文字样式,并且在她更改样式后我无法获取文本。任何帮助,将不胜感激。再次感谢您的浏览。

编辑 #3 这是 DOM 树 HTML 的另一个屏幕截图。如果你能注意到我正在解析 div 类“条目内容”,则有问题的文本就会被暴露。从“今天...”开始,然后是更改文本颜色的范围,我可以获得该文本。我需要的是之后的文本,“It was one...”就在结束 p 标签之前。

Dom Tree

我还将整个 HTML 放在要点上。 HERE 。有问题的行是 102。尽管 HTML 没有很好地复制这一点。谢谢。

最佳答案

对代码进行一些更改以进一步了解层次结构,并且它适用于您的 html 示例。注意:我将所有条目内容附加到单个 NSMutableString 中以使其更容易。 就像我在评论中警告您的那样,请谨慎使用。 :-)

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]; 
NSData *data = [NSData dataWithContentsOfFile:filePath];
TFHpple *detailParser = [TFHpple hppleWithHTMLData:data];
NSString *xpathQueryString = @"//div[@class='entry-content']";
NSArray *node = [detailParser searchWithXPathQuery:xpathQueryString];

NSMutableString *test = [[NSMutableString alloc] initWithString:@""];

for (TFHppleElement *element in node) {
    for (TFHppleElement *child in element.children) {            
        if (child.content != nil) {
            [test appendString:child.content];
        }
        if ([child.children count]!= 0) {
            for (TFHppleElement *grandchild in child.children) {
                if (grandchild.content != nil) {
                    [test appendString:grandchild.content];
                 }
                for (TFHppleElement *greatgrandchild in grandchild.children) {
                    if (greatgrandchild.content != nil) {
                        [test appendString:greatgrandchild.content];
                    }
                    for (TFHppleElement *greatgreatgrandchild in greatgrandchild.children) {
                        if (greatgreatgrandchild.text != nil) {
                            [test appendString:greatgreatgrandchild.text];
                        }
                        if (greatgreatgrandchild.content != nil) {
                            [test appendString:greatgreatgrandchild.content];
                        }
                    }
                }
            }
        }
    }
}

NSLog(@"test = %@", test);

关于html - Hpple,在 </span> 之后获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671987/

相关文章:

html - 将 2 个 div 对齐并向右对齐

python - 如何在 django 博客文章中添加图像

html - PRE 和空格行为

ios - Google 和 Facebook 在同一个应用程序中登录

c# - 从 XML 声明片段 : XmlDeclaration is not supported for partial content parsing 获取 XML 编码

响应式背景图片上的 html 文本

python - iOS 上的 Swift 和 Python 之间兼容的 AES 加密

objective-c - iOS 10 UILabels -> 1 UIView -> 使用动画循环

c - 在c中将6字节IP/端口字符串解析为in_addr结构

c++ - 使用快速 xml 查找子元素