TFHpple - 获取没有元素标签的元素HTML?

时间:2013-05-18 21:00:27

标签: iphone ios objective-c xml tfhpple

我正在解析一些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];
}

2 个答案:

答案 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函数。