Eli
Eli

Reputation: 262

Extracting HTML Attribute from string iPhone

I have an html string that I get from the response of a website. Everything I do there works awesome and I have no difficulty. What I need to go is grab the only href attribute within the html. What is the best approach for getting this URL that is contained within that attribute. I am open to any external libraries if that is necessary, I just want the most efficient way possible. Thanks.

Upvotes: 2

Views: 1788

Answers (2)

dimme
dimme

Reputation: 4424

Use this API to parse the HTML code and pick the elements you want.

ElementParser is lightweight framework to provide easy access to xml and html content. Rather than get lost in the complexities of the HTML and XML specifications, it aspires to not obscure their essential simplicity. It doesn’t do everything, it aspires to do “just enough”.

Source: http://touchtank.wordpress.com/element-parser/


Here is an example of how to use the ElementParser with your own example. I hope this is helpful.

Merry Xmas! Ho-Ho-Ho

// Here you create the parser, don't forget to #import "Element.h" and #import "ElementParser.h"
ElementParser * parser = [[ElementParser alloc] init];

// This is the HTML source code that you want to parse
DocumentRoot* document = [parser parseHTML:@"<html><a href=\"http://google.com\">Google Link</a></html>"];

// Create an array where you will put all the <a></a> elements
NSArray* elements = [document selectElements: @"a"];

// Iterate though the array, for each element pick the "href" attribute
NSMutableArray* results = [NSMutableArray array];
for (Element* element in elements){
    NSString* snipet = [element attribute:@"href"];

    // Add the result for each element to the "results" array
    [results addObject: snipet];
}

// Print the results on the screen
NSLog(@"%@",[results componentsJoinedByString: @"\n"]);

Upvotes: 4

Ecarrion
Ecarrion

Reputation: 4950

You could use NSRegularExpresion for extracting the url of the html tag.

NSString *regexStr = @"http?://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?";
NSString * url = @"<a href=\"http://www.stackoverflow.org/\">stackoverflow</a>";
NSError *error;
NSRegularExpression *testRegex = [NSRegularExpression regularExpressionWithPattern:regexStr options:0 error:&error];
if( testRegex == nil ) NSLog( @"Error making regex: %@", error );
NSRange range = [testRegex rangeOfFirstMatchInString:url options:0 range:NSMakeRange(0, [url length])];

NSString * href = [url substringWithRange:range];

Bear in mind that NSRegularExpression needs IOS 4 or 5.

Upvotes: -1

Related Questions