gpt4 book ai didi

iphone - NSScanner 循环问题

转载 作者:行者123 更新时间:2023-12-03 20:23:20 25 4
gpt4 key购买 nike

我有一个 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;
}

最佳答案

不要使用扫描仪来解析 HTML(也不要使用正则表达式......哦,痛苦)*。 HTML 的全部要点在于它是一个结构化文档,旨在作为节点或对象树进行遍历。几乎整个基于 DOM [文档对象模型] 的行业都是围绕这一点构建的。

只需使用 XML 解析器,因为[无论如何,结构良好的 HTML 实际上只是 XML]。 NSXMLDocument (或者 - 如果您需要事件驱动 - NSXMLParser )将会很好地工作。

或者,如果您必须处理格式错误的 HTML(即任意服务器污水),请使用适当的 HTML 解析器。

这个question/answer describes exactly that ,有一个可靠的例子。

*更不用说解析 HTML 是业界“已解决的问题”。无需推出新的。

关于iphone - NSScanner 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com