htmlのサンプルを次に示します(実際のページでトークン番号が変更されます): http://nonlinearmind.no-ip.org:8888 / token.html
このページから、次の変数の情報をエスケープする必要があります。
username = <title>
session = <h1>
token = <h2>
これを達成するための最も簡単な方法は何ですか?
htmlのサンプルを次に示します(実際のページでトークン番号が変更されます): http://nonlinearmind.no-ip.org:8888 / token.html
このページから、次の変数の情報をエスケープする必要があります。
username = <title>
session = <h1>
token = <h2>
これを達成するための最も簡単な方法は何ですか?
token.html
そのソースを制御できますか? HTML ではなく、JSON または XML を返すことができれば最高です。これにより、解析プロセスが大幅に簡素化されます。
NSData
ただし、ページをビアに簡単にロードできます。
NSError *error = nil;
NSURL *url = [NSURL URLWithString:@"http://nonlinearmind.no-ip.org:8888/token.html"];
NSData *htmlData = [NSData dataWithContentsOfURL:url options:0 error:&error];
if (error != nil)
{
NSLog(@"%s unable to load URL '%@'; error = %@", __FUNCTION__, url.absoluteString, error);
}
またはNSString
ビアに:
NSError *error = nil;
NSURL *url = [NSURL URLWithString:@"http://nonlinearmind.no-ip.org:8888/token.html"];
NSString *htmlString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
if (error != nil)
{
NSLog(@"%s unable to load URL '%@'; error = %@", __FUNCTION__, url.absoluteString, error);
}
そこから解析できます。
たとえば、呼び出され<h1>
た から開始タグと終了タグの間のすべてのテキストを取得するには、次のようにします。NSString
htmlString
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<h1>(.*?)</h1>"
options:NSRegularExpressionCaseInsensitive
error:&error];
if (error != nil)
{
NSLog(@"%s regex error: %@", __FUNCTION__, error);
}
NSMutableArray *matches = [NSMutableArray array];
[regex enumerateMatchesInString:htmlString
options:0
range:NSMakeRange(0, [htmlString length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
// the string including html tags is [htmlString substringWithRange:result.range]
NSRange matchRange = [result rangeAtIndex:1];
[matches addObject:[htmlString substringWithRange:matchRange]];
}];
NSString *first = matches[0];
NSString *second = matches[1];
// etc.
NSLog(@"first=%@", first);
NSLog(@"second=%@", second);
JSON を実行できるとは言っていないことは承知していますが、できれば、iOS の実装は信じられないほど簡単です。したがって、次のような JSON 結果を返す URL があるとします。
{
"username" : "myusername",
"session" : "mysessionidentifier",
"token" : "somecryptictoken2340923923402309234"
}
次に、次のように解析できます。
NSURL *url = [NSURL URLWithString:@"http://nonlinearmind.no-ip.org:8888/token.json"];
NSError *error;
NSData *data = [NSData dataWithContentsOfURL:url
options:0
error:&error];
if (error != nil)
{
NSLog(@"%s data read error %@", __FUNCTION__, error);
return;
}
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:data
options:0
error:&error];
if (error != nil)
{
NSLog(@"%s JSON parse error %@", __FUNCTION__, error);
return;
}
NSLog(@"username = %@", results[@"username"]);
NSLog(@"session = %@", results[@"session"]);
NSLog(@"token = %@", results[@"token"]);
これは、iOS アプリで HTML を解析するための優れたチュートリアルです。
非常に基本的な HTML ページを解析するための詳細なステップバイステップの概要を示しているため、上記の例に最適です。
また、解析されたタイトルを TableView に配置する方法も示します。質問にコードを投稿するだけでなく、解析のプロセスを理解する方が役立つと思います。