获取hpple中的HTML标记以及文本?

时间:2012-09-27 22:34:17

标签: html objective-c ios parsing hpple

以下代码获取某个div的所有文本。我可以从div中获取所有文本以及html属性吗?所以它还将所有<p> </p>'s<br> </br>'s添加到字符串myString中?

//trims string from previous page
        NSString *trimmedString = [stringy stringByTrimmingCharactersInSet:
                                 [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    NSData *data = [[NSString stringWithContentsOfURL:[NSURL URLWithString:trimmedString]] dataUsingEncoding:NSUTF8StringEncoding];
    TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:data];    
    NSArray *elements  = [xpathParser searchWithXPathQuery:@"//div[@class='field-item even']"];
    TFHppleElement *element = [elements lastObject]; //may need to change this number?!
    NSString *mystring = [self getStringForTFHppleElement:element];

    trimmedTextView.text = [trimmedTextView.text stringByAppendingString:mystring];

方法:

-(NSString*) getStringForTFHppleElement:(TFHppleElement *)element 
{

NSMutableString *result = [NSMutableString new];

// Iterate recursively through all children
for (TFHppleElement *child in [element children])
    [result appendString:[self getStringForTFHppleElement:child]];

// Hpple creates a <text> node when it parses texts
if ([element.tagName isEqualToString:@"text"])
    [result appendString:element.content];

return result;
}

任何想法都将不胜感激。欢呼声。

1 个答案:

答案 0 :(得分:1)

试试这个:

NSString *htmlDataString = [webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"];

这会将所有HTML输出为字符串。然后,您可以在您的本机代码中解析它,并找到您感兴趣的div,就像您在上面的示例中所做的那样。

你也可以使用HTML中的任何DOM元素:

NSString *htmlDataString = [webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.getElemenById('mydiv')"];

效率更高但需要一些javascript技能。