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数据解析:
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