我正在解析一些HTML,我需要获得<body />
的所有innerHTML。我是这样做的:
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];
}
答案 0 :(得分: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];
}
答案 1 :(得分:0)
我有同样的问题要解决,我最后做的是获取带有html格式的element.raw,然后使用以下描述的方法之一删除标记:
Remove HTML Tags from an NSString on the iPhone
我使用了stipHtml函数。