IOS开发 XML文件格式及数据解析

XML文件格式:

1:XML文件格式介绍

2:XML文件格式定义

3:XML文件格式的语法

可扩展标记语言(XML)与Access,Oracle和SQL Server等数据库不同,数据为提供了更强有力的数据存储和分析能力,例如:数据索引,排序,查找,相关一致性等,XML的宗旨传输数据的,而与其同属标准通用标记语方的HTML主要用于显示数据。事实上XML与其它数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这个上点使XML与众不同。

XML的简单使用其易于在任何应用 程序中读写数据,这使用XML很快成为数据交换的唯一公共语言,虽然不同的应用 软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,MAC OS,Linux以及其它平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。


XML格式

XML数据解析:

1.XML数据的定义

2.XML数据的解析方法

3.XML数据解析实践

GDataXMLDoucument: XML文档对象类

GDataXMLElement:XML元素对象类

nodesForXpath: 通过路径获取节点

elementsForName:通过名字获取子元素

StringValue:获取字符串元素内容

1.将XML文件导入项目

2.导入GData库文件(XML解析库)

【viewController.h】

#import<UIKit/UIKit>

@interface viewController:UIViewController

//数据视图协议

<UITableViewDataSource,UITableViewDelegate>

//数据视图

UITableView* _tableView;

//数据对象

NSMutableArray* _arrayData;

@end

【ViewController.m】

#import"ViewController.h"

#import"GdataXMLNode.h"

#import"UserInfo.h"

@interface ViewController()

@end

@implementation ViewController

-(void)viewDidLoad{

[super viewDidLoad]

_tableView=[[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrounped];

_tableView.delegate=self;

_tableView.dataSource=self;

[self.view addSubview:_tableView];

_arrayDate=[[NSMutableArray alloc]init];

[self paresXML]

}

-(NSIngeger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

return 1;

}

-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section{

return _arrayData.count;

}

//解析XML

-(void)paresXML{

//获取解析文件 的全路径,txt格式,内容为xml格式

NSString* path=[[NSBundle mainBundle] pathForResource:"sns" ofType:@"txt"];

//将xml读入到内存中,并且对二进制方式存储

NSData* dataXML=[NSData dataWithContentsOfFile:path];

//创建XML文档对象,参数1:XML格式的二进制对象,参数2:选择性参数,默认为0,参数3:错误对象

//错误对象定义

NSError* error=nil;

GDataXMLDocument* docXML=[[GDataXMLDocument alloc]initWithData:dataXML options:0 error:&errorl];

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

//获取根节点元素对象

GDataXMLElement* elem=[docXML rootElement];

//搜索节点下面的所有的count元素对象,将所有跟节点所有的count对象添加到数组中返回这个数组

NSArray* arrCount=[elemRoot elementsForName:@"count"];

//获得数组的第一个元素

GDataXMLElement* elemCount=[arrCount objectAtIndex:0];

//获得具体的元素值

NSString* strCount=[elemCount stringValue];

NSLog(@"count=%@",strCount);

NSArray* arrTotal=elemRoot elementsForName:@"totalCount"];

GdataXMLElement* elemTotal=[arrTotal objectAtIndex:0];

NSString* strTotal=[elemTotal stringValue];

NSLog(@"total=%@",strTotal);

NSArray* arrUList=[elemRoot elementsForName:@"user_list"];

//获取最后一个元素

GDataXMLElement* elemUList=[arrUList lastObject];

NSArray* arrUsers=elemUList elementsForName:@"user"];

for(init i=0;i<arrUsers.count;i++){

GdataXMLElement* elemUser=arrUsers[i];

NSArray* arrUName=[elemUser elementsForName:@"username"];

//获取最后一个元素

GDataXMLElement* elemUNAme=[arrName lastObject];

NSString* uNAme=[elemName stringValue];

NSArray* arrUID=[elemUser elementsForName:@"uid"];

//获取最后一个元素

GDataXMLElement* elemUNAme=[arrUID lastObject];

NSString* uID=[elemUser  stringValue];

UserInfo* uInfo=[[UserInfo alloc]init];

uInfo.mUserName=uName;

uInfo.mUserID=uID;

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

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

[_arrayData addObject:uInfo];

}

}

-(UITableViewCell*)tableView:(UITableView *)tableView cellforRowAtIndexPath:(NSIndexPath *) indexPath{

NSString* str=@"ID";

UITableViewCell* cell=[_tableView dequeueReusableCellWithIdentifier:str];

if(cell==nil){

cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:str];

}

UserInfo* uInfo=[_arrData objectAtIndex:indexPath.row];

cell.textLable.text=uInfo.mUserName;

cell.detailTextLabel.text=uInfo.mUserID;

return cell;

}


【userInfo.h】

#import<Foundation/Foundation.h>

@interface UserInfo:NSObject

//用户名

@property(retain,nonatomic)NSString* mUserName;

//用户ID

@property(retain,nonatomic)NSString* mUserId;

//用户信用

@property(retain,nonatomic)NSString* mUserCredit;

//用户经验值

@property(retain,nonatomic)NSString* mUserExp;

//用户昵称

@property(retain,nonatomic)NSString* mUserNickName

//分组ID

@property(retain,nonatomic)NSString* mHeaderPath

//好友数量

@property(retain,nonatomic)NSString* mFriendNum;

@end

【userInfo.m】

#import "UserInfo.h"

@implementation UserInfo

//同步蜀性和成员变量

@syntesize mFriendNum=_mFriendNum;

@syntesize mGroupID=_mGrounpID;

@syntesize mHeaderPath=_mHeaderPath;

@syntesize mUserCredit=_mUserExp;

@syntesize mUserID=_mUserID;

@syntesize mUserNme=_UserName;

@syntesize mUserNicName=_mUserNicName;

@end


实现结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容