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 に答える