加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml解析例子

发布时间:2020-12-15 23:04:05 所属栏目:百科 来源:网络整理
导读:?xml version = "1.0" encoding = "UTF8" standalone = "yes" ? !-- 上面的是预处理指令 编码方式为 UTF8 版本为 1.0 standalone 说明他是独立的 与其他没有关系 -- !-- 以下是一个学生名单 -- student_list student stu_name otis /stu_name stu_class T23

<?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>

<stu_name>tim</stu_name>

<stu_num>2003081210</stu_num>

<stu_name>lili</stu_name>

<stu_class>T24</stu_class>

<stu_num>2003081206</stu_num>

</student_list>

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



viewcontroller.h文件

#import <UIKit/UIKit.h>


@interface ViewController : UIViewController<NSXMLParserDelegate>


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

)NSXMLParser *m_pXmlParse;//系统带得 解析的类 即:解析器

)NSMutableString *m_pStrSaxResult;//存解析结果

)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:@"%@rn",@"获取指定路径的 xml 文件成功"];

}

else

{

获取指定路径的 xml 文件失败"];


}

}


//开始解析

-(void)parserDidStartDocument:(NSXMLParser *)parser

{

NSLog(@"%s",__func__);

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

];

}

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

-(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:@"%@ = %@rn",elementName,_m_pStrSaxTmp];

}

}

//完成解析xml 文档

-(void)parserDidEndDocument:(NSXMLParser *)parser

{

NSLog(@"%s",__func__);


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

[_m_pTextViewResult setText:_m_pStrSaxResult];

}


@end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读