您的位置:首页 > Web前端 > HTML

基于OC的HTML解析4—获得指定标签的层次结构

2015-08-17 19:51 525 查看
在ios开发过程中难免会遇到要求处理网络数据,而对于处理下载下来的HTML文件,对其进行解析,查找需要的指定标签并获得其属性,或者要求求得该标签的层次结构。

1 在上述基础上要想获得指定标签的AHP 需要用到栈的思想,首先将标签数组依次入栈 对栈顶元素进行判断,判断其是否为指定标签的结束标签,若为结束标签 则出栈至指定标签,至栈顶输出标签至栈底。若不为指定标签的结束标签,则进行出栈操作至该结束标签的起始标签。

NSString *AHPAll(NSMutableArray * marr,NSString *strinput)
{
NSMutableArray * marrStack = [[NSMutableArray alloc] init];
NSMutableString *mstr = [[NSMutableString alloc] init];
NSMutableArray * marrAHP = [[NSMutableArray alloc] init];
int top = -1;
for (int i = 0; i < [marr count]; i++) {
NSString *strLabel = [marr objectAtIndex:i];
if([strLabel characterAtIndex:0] == '/')
{
NSString *strLabelFirst = [[strLabel componentsSeparatedByString:@"/"] objectAtIndex:1];
int count = 1;
while ( count != 0) {
NSString *strtemp = [marrStack objectAtIndex:top];
top -- ;
if([strtemp isEqualToString:strLabelFirst ] == YES)
{
count -- ;
}
else if ([strtemp isEqualToString:strLabel] == YES)
{
count++;
}

}
}
else if([strLabel isEqualToString:strinput] == YES)
{
int toptemp = top;
while (toptemp!=-1) {
NSString *strtemp = [marrStack objectAtIndex:toptemp];
toptemp -- ;
[marrAHP addObject:strtemp];
}
NSMutableString * mstrtemp = [[NSMutableString alloc] init];
for (int i = (int)[marrAHP count] - 1; i >=0 ; i--) {
[mstrtemp appendFormat:@"%@|",[marrAHP objectAtIndex:i]];
}
[mstrtemp appendString:strinput];
[mstr appendFormat:@"%@\n",mstrtemp];
top++;
[marrStack setObject:strLabel atIndexedSubscript:top];
marrAHP = [[NSMutableArray alloc] init];
}
else{
top++;
[marrStack setObject:strLabel atIndexedSubscript:top];
}
}

return mstr;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 数据 网络