将 HTML <Tag> 解析为 ios
Posted
技术标签:
【中文标题】将 HTML <Tag> 解析为 ios【英文标题】:Parsing HTML <Tag> into ios 【发布时间】:2012-12-28 12:02:08 【问题描述】:我正在使用 Hpple 将 html 标记解析到 ios 中。我能够解析 HTML 标签所在的数据
<div id="NewsPageSubTitle">
<p><**span** hi how are you>
使用ios代码:
NSString *tutorialsXpathQueryString = @"//div[@id='NewsPageArticle']/p/span ";
NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];
但在少数情况下我没有跨度,即 html 中的字符串由标记“p”直接访问,例如:
<div id="NewsPageSubTitle">
<p>< hi how are you>
这里我使用ios代码为:
NSString *tutorialsXpathQueryString = @"//div[@id='NewsPageArticle']/p ";
NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];
但在这里我得到一个空白数据作为响应。
谁能告诉我如何解决这个问题?
【问题讨论】:
【参考方案1】:因为有时 para 标记有跨度,有时没有,我建议尝试通过循环遍历子级来处理它
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSData * data = [NSData dataWithContentsOfFile:filePath];
TFHpple * tutorialsParser = [[TFHpple alloc] initWithHTMLData:data];
NSString *tutorialsXpathQueryString = @"//div[@id='NewsPageSubTitle']";
NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];
for (TFHppleElement * element in tutorialsNodes)
NSLog(@"%@", element);
NSLog(@"%@", [element tagName]);
NSLog(@"%@", [element attributes]);
NSLog(@"%@", [element children]);
for (TFHppleElement *childElement in [element children])
NSLog(@"%@", childElement);
【讨论】:
【参考方案2】:检查:https://github.com/mwaterfall/MWFeedParser
这将为 iphone sdk 提供 HTML 解析器。
更多帮助:
this blog 和 here。
【讨论】:
【参考方案3】:NSString *filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"html" inDirectory:@"New Folder 2"];
NSData * data = [NSData dataWithContentsOfFile:filePath];
NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
NSString *htmlString = [[NSString alloc] initWithData:[readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding];
TFHpple * Parser = [[TFHpple alloc] initWithHTMLData:data];
NSString *query = @"//p";
NSArray *nodes = [Parser searchWithXPathQuery:query];
for (TFHppleElement *item in nodes)
NSLog(@"Title : %@", item.content);
NSLog(@"URL : %@", [item.attributes valueForKey:@"href"]);
【讨论】:
以上是关于将 HTML <Tag> 解析为 ios的主要内容,如果未能解决你的问题,请参考以下文章