以下代码获取某个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;
}
任何想法都将不胜感激。欢呼声。
答案 0 :(得分:1)
试试这个:
NSString *htmlDataString = [webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"];
这会将所有HTML输出为字符串。然后,您可以在您的本机代码中解析它,并找到您感兴趣的div,就像您在上面的示例中所做的那样。
你也可以使用HTML中的任何DOM元素:
NSString *htmlDataString = [webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.getElemenById('mydiv')"];
效率更高但需要一些javascript技能。