文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Mac: 基于事件的XML解析器(NSXMLParser)

Mac: 基于事件的XML解析器(NSXMLParser)

时间:2010-08-16  来源:Likwo

Mac: 基于事件的XML解析器(NSXMLParser)

2010年06月18日, 10:38 下午

XML用处很大… 用得很广… 最简单的来说用PHP和Javascript, JQuery都可以简单解析一个整齐的树结构XML文件

但是我们可爱的佛典网XML为复杂结构, 于是乎xslt帮不上什么忙了……我希望在新版的佛典中能包含所有的佛经, 于是简单并且高效的使用所有中华佛典网上的XML就是我的目标了.

于是,基于事件的XML解析器(Event-Driven XML Parser) NSXMLParser 就是我必须用到的了

继续前面的两篇Mac平台程序设计
Mac:打开一个目录
Mac:得到一个目录内的内容

1, 更改界面, 添加一个”解析一个目录里面的第一个的文件”的按钮

2, 构建XML解析部分

//1, 构建解析方法
-(void)parseXMLFile:(NSURL *)XMLURL //XMLURL为第一个文件的URL
{
        NSXMLParser *eventParser = [[NSXMLParser alloc] initWithContentsOfURL:XMLURL];
        [eventParser setDelegate:self];  //设置代理为本地
        [eventParser parse];  //开始解析
 
        NSLog(@"end Of parseXMLFile");
}
//2, 解析开始后,所有XML的内容由NSXMLParserDelegate处理
//  所以一定要注意在本地添加<NSXMLParserDelegate>到文件头
//在NSXMLParser读到<p>的时候重写一个<p>标签,原来的是XML中的,无法直接使用
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
        namespaceURI:(NSString *)namespaceURI 
        qualifiedName:(NSString *)qName 
        attributes:(NSDictionary *)attributeDict
{
        if ([elementName isEqualToString:@"p"]) {
                [htmlDataString appendFormat:@"<p>"];
                needOrNot = YES;  //我们需要<p>和</p>中间的内容,其余的在end中设置NO
                return;
        }
}
 
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
        if(needOrNot)
        {
                [htmlDataString appendString:string]; //如上,将需要的字段添加到得到的html结构String中
        }
}
 
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
        namespaceURI:(NSString *)namespaceURI 
        qualifiedName:(NSString *)qName
{
        if ([elementName isEqualToString:@"p"]) {
                [htmlDataString appendFormat:@"</p>"];
                needOrNot = NO;  //不需要的内容不允许上面的delegate去读取到htmlDataString中
                return;
        }
}
 
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
        NSLog(htmlDataString); //在结束后输出得到的html数据结构.
}

这样我就可以对佛典网的复杂结构xml开始分析了, 之后会放出更多对该xml处理的细节

Tag标签: iphone
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载