0

我正在解析一些 HTML,我需要获取<body />. 我是这样做的:

TFHpple *doc = [[TFHpple alloc] initWithHTMLData:[NSData dataWithContentsOfFile:sectionFilePath]];
TFHppleElement *body = [doc searchWithXPathQuery:@"//body"][0];

NSString *bodyHTML  = body.raw;

但是,这会返回:

<body>stuff inside body</body>

而不仅仅是:

stuff inside body

问题:有什么方法可以获取元素的纯内部 HTML,不包括它自己的标签?

我想出了这个方法,但我觉得我在这里重新发明了轮子。这种方法也很慢。

TFHppleElement *child;
for(int i = 0; i<body.children.count; i++){
    child = (TFHppleElement*)body.children[i];

    if(child.raw != nil) [bodyHTML appendString:child.raw];
    else if(child.content != nil) [bodyHTML appendString:child.content];
}
4

2 回答 2

0

尝试这个...

NSURL *url = [NSURL URLWithString: URL_HERE];
NSData *htmlData = [NSData dataWithContentsOfURL:url];

TFHpple *parser = [TFHpple hppleWithHTMLData:htmlData];

NSString *xpathQueryString = @"//body";
NSArray *nodes = [parser searchWithXPathQuery:xpathQueryString];

for (TFHppleElement *element in nodes) {

    lable.text = [[element firstChild] content];
}
于 2013-05-18T21:10:45.160 回答
0

我有一个同样的问题要解决,我最后做的是在你得到它的时候用 html 格式获取 element.raw,然后用这里描述的一种方式删除标签:

从 iPhone 上的 NSString 中删除 HTML 标签

我使用了 stipHtml 函数。

于 2014-04-17T09:22:48.563 回答