我正在开发适用于iPhone的iOS应用。我从网址获取json数据。
现在,数据包含我要解析的html标签,我使用Hpple lib来执行此操作。
作为ios开发的新手,我无法弄清楚如何做到这一点。
数据包含我想要提取信息的锚和img标签。另外,我想保持数据的格式不变(通过解析段落,块引用,强等...标签)。
并动态显示相应的内容(取决于json数据)。
用于解析html的Obj C代码:
Tutorial.h
@interface Tutorial : NSObject
@property (nonatomic, copy) NSString *url;
@end
Tutorial.m
@implementation Tutorial
@synthesize url = _url;
@end
DetailViewController.m
-(void)loadTutorials {
//_DetailModal1[3] contain html source code.
NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:_DetailModal1[3]];
TFHpple *tutorialsParser = [TFHpple hppleWithHTMLData:tutorialsHtmlData];
NSString *tutorialsXpathQueryString = @"//a/";
NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];
NSMutableArray *newTutorials = [[NSMutableArray alloc] initWithCapacity:0];
for (TFHppleElement *element in tutorialsNodes) {
Tutorial *tutorial = [[Tutorial alloc] init];
[newTutorials addObject:tutorial];
tutorial.url = [element objectForKey:@"href"];
}
objects = newTutorials;
[self.textView reloadData];
}
xcode:5.1
ios版本:7.0及以上版本
答案 0 :(得分:0)
我以前遇到过同样的问题并找到了使用NSScan的解决方案
NSString *inputString = @"</li>"; //this can be CSS or XML or other
NSString *startTag = @"<li class=\"foo\">";
NSString *endTag = @"</li>";
NSString *savedString = nil;
NSScanner *scanner = [[NSScanner alloc] initWithString:inputString];
[scanner scanUpToString:startTag intoString:nil];
scanner.scanLocation += [startTag length];
[scanner scanUpToString:endTag intoString:&savedString];