Pri*_*yat 2 iphone objective-c nsscanner
我有一个NSScanner对象,扫描HTML文档中的段落标记.看起来扫描仪停在它找到的第一个结果,但我需要一个数组中的所有结果.
如何改进我的代码以完成整个文档?
- (NSArray *)getParagraphs:(NSString *) html
{
NSScanner *theScanner;
NSString *text = nil;
theScanner = [NSScanner scannerWithString: html];
NSMutableArray*paragraphs = [[NSMutableArray alloc] init];
// find start of tag
[theScanner scanUpToString: @"<p>" intoString: NULL];
if ([theScanner isAtEnd] == NO) {
NSInteger newLoc = [theScanner scanLocation] + 10;
[theScanner setScanLocation: newLoc];
// find end of tag
[theScanner scanUpToString: @"</p>" intoString: &text];
[paragraphs addObject:text];
}
return text;
}
Run Code Online (Sandbox Code Playgroud)
不要使用扫描仪来解析HTML(也不要使用正则表达式......哦,痛苦)*.HTML的重点在于它是一个结构化文档,旨在作为节点或对象树遍历.几乎所有基于DOM [文档对象模型]的行业都是围绕这个构建的.
只需使用XML解析器,因为[结构良好的HTML实际上只是XML]. NSXMLDocument(或 - 如果你需要事件驱动 - NSXMLParser)将工作宏.
或者,如果您必须处理格式错误的HTML(即任意服务器污水),请使用正确的HTML解析器.
这个问题/答案用一个可靠的例子来描述.
*更不用说解析HTML是业界"解决的问题".没有必要推出一个新的.
| 归档时间: |
|
| 查看次数: |
1814 次 |
| 最近记录: |