2

下面的代码从某个 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;
}

任何想法,将不胜感激。干杯。

4

1 回答 1

1

尝试这个:

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

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

您也可以使用 HTML 中的任何 DOM 元素来执行此操作,例如:

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

这更有效,但需要一点 javascript 技能。

于 2012-09-27T22:52:09.923 回答