xml解析例子

<?xml version = "1.0" encoding = "UTF8" standalone = "yes" ?>

<!--上面的是预处理指令  编码方式为UTF8  版本为1.0  standalone 说明他是独立的 与其他没有关系-->

<!--以下是一个学生名单-->

<student_list>

    <student>

        <stu_name>otis</stu_name>

        <stu_class>T23</stu_class>

        <stu_num>2003081205</stu_num>

    </student>

    <student>

        <stu_name>tim</stu_name>

        <stu_class>T23</stu_class>

        <stu_num>2003081210</stu_num>

    </student>

    <student>

        <stu_name>lili</stu_name>

        <stu_class>T24</stu_class>

        <stu_num>2003081206</stu_num>

    </student>

</student_list>

//以上是xml的内容,我把它存在一个名为 text.xml的文本中



viewcontroller.h文件

#import <UIKit/UIKit.h>


@interface ViewController : UIViewController<NSXMLParserDelegate>


@property (strong,nonatomic)IBOutlet UITextView *m_pTextViewResult;

@property (strong,nonatomic)NSXMLParser *m_pXmlParse;//系统带得 解析的类  即:解析器

@property (strong,nonatomic)NSMutableString *m_pStrSaxResult;//存解析结果

@property (strong,nonatomic)NSMutableString *m_pStrSaxTmp;//存解析的临时结果


-(IBAction)btnClickXMLParseOfSAX:(id)sender;


@end


。m文件

#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


//按钮关联方法  开始解析

-(IBAction)btnClickXMLParseOfSAX:(id)sender

{

    

    NSLog(@"%s",__func__);


//*******加载文件

    //获取text 路径

    NSString *path = [[NSBundle mainBundle]pathForResource:@"text" ofType:@"xml"];

    //定义一个文件句柄关联路径

    NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path];//读取

    //读取数据到data

    NSData *data = [file readDataToEndOfFile];

    //关闭文件

    [file closeFile];

    

    

    

    //根据xml数据进行创建解析器   初始化 .m_pXmlParse

    self.m_pXmlParse = [[NSXMLParser alloc]initWithData:data];

    //设定代理

    [self.m_pXmlParse setDelegate:self];//解析器与当前视图建立委托

    self.m_pStrSaxResult = [[NSMutableString alloc]init];

    self.m_pStrSaxTmp = [[NSMutableString alloc]init];

    //通知解析器开始解析,返回一个bool值,标志解析成功或失败

    BOOL flag = [self.m_pXmlParse parse];

    if (flag) {

        [_m_pStrSaxResult appendFormat:@"%@\r\n",@"获取指定路径的 xml 文件成功"];

    }

    else

    {

        [_m_pStrSaxResult appendFormat:@"%@\r\n",@"获取指定路径的 xml 文件失败"];


    }

}


//开始解析

-(void)parserDidStartDocument:(NSXMLParser *)parser

{

    NSLog(@"%s",__func__);

    [_m_pStrSaxResult appendFormat:@"%@\r\n",@"开始解析 xml of SAX 文件"];

    [_m_pStrSaxResult appendFormat:@"%@\r\n",@"************student********"];

}

//遇到数据时回调,包括空格和回车

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

    NSLog(@"%s",__func__);


    

    [_m_pStrSaxTmp setString:@""];

    [_m_pStrSaxTmp appendFormat:@"%@",string];

    NSLog(@"string = %@",string);

}


//当遇到结束标签时调用

-(void)parser:(NSXMLParser *)parser

didEndElement:(NSString *)elementName  //之处理 end 标签

 namespaceURI:(NSString *)namespaceURL

qualifiedName:(NSString *)qName


{

    

    NSLog(@"%s",__func__);


    if (NSOrderedSame == [elementName compare:@"student"]) {

        [_m_pStrSaxResult appendFormat:@"%@\n",@"*******student*********"];

    }

    else if (NSOrderedSame == [elementName compare:@"student_list"])

    {

        

    }

    else

    {

        [_m_pStrSaxResult appendFormat:@"%@ = %@\r\n",elementName,_m_pStrSaxTmp];

    }

}

//完成解析xml 文档

-(void)parserDidEndDocument:(NSXMLParser *)parser

{

    

    NSLog(@"%s",__func__);


    [_m_pStrSaxResult appendFormat:@"%@",@"解析 xml  文件完成"];

    [_m_pTextViewResult setText:_m_pStrSaxResult];

    

}


@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值