当前位置:编程学习 > XML/UML >>

XML解析器 NSXMLParser

 构建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数据结构.
}
补充:Web开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,