ios 解析xml 并且运用了字典和可变数组存放数据
来源:互联网 发布:八字预测全息论淘宝 编辑:程序博客网 时间:2024/05/22 07:56
ios 解析xml 并且运用了字典和可变数组存放数据
@interface WithoutBookingView : UIViewController <UITextFieldDelegate,NSXMLParserDelegate,
UITableViewDelegate,UITableViewDataSource>{
@private
//*----------------选择时间------------------------*//
UIDatePicker* datePicker_;
//*----------------------------------------------*//
//*---------------创建数组存数据、tableView显示选择的列表----------------*//
@public
//数组
//校区
NSArray* schoolDistrictList_;
//教室类型
NSMutableArray* classTypeMutableArray_;
//教室
NSMutableArray* lessonClassroomMutableArray_;
//保存教室数组的数组
NSMutableArray* allTheClassroomMutableArrar_;
//显示的时候用会array的数组
NSArray* classTypeList_;
NSArray* lessonClassroomList_;
//存xml里所有数据的字典
NSDictionary* allTheClassroomDictionary_;
//节次
NSArray* lessonSectionList_;
//创建tableview
//校区
UITableView* schoolDistrictTableView_;
//教室类别
UITableView* classTypeTableView_;
//教室
UITableView* lessonClassroomTableView_;
//节次
UITableView* lessonSectionTableView_;
//*---------------------------------------------------------------*//
//*********************************解析xml**************************************
NSData* xmlData_;
NSXMLParser* parserXML_;
NSData* dataToParse_;
NSMutableArray* workingArray_;
NSMutableString* workingPropertyString_;
NSArray* elementsToParse_;
BOOL storingCharacterData_;
//*********************************解析xml**************************************
}
@end
- (void)viewDidLoad
{
[super viewDidLoad];
//*===============================初始化数组、列表等==========================================*//
//校区与节次
schoolDistrictList_ = [ [ NSArray alloc ] initWithObjects: @"大学城",@"龙洞",@"东风路",@"商学院" , nil ];
lessonSectionList_ = [ [ NSArray alloc ] initWithObjects: @"1,2",@"3,4",@"5",@"6,7",@"8,9",@"10,11,12", nil ];
//节次默认第1,2节
lessonSectionTextField_.text = [ lessonSectionList_ objectAtIndex: 0 ];
//初始化教室类型、教室、字典
classTypeMutableArray_ = [ [ NSMutableArray alloc ] init ];
lessonClassroomMutableArray_ = [ [ NSMutableArray alloc ] init ];
//*=======================================================================================*//
//*---------------------------------初始化tableview-------------------------------------*//
//统一tableview的大小
CGRect tableViewFrame = CGRectMake( 120 , 120 , 165 , 140 );
//校区
schoolDistrictTableView_ = [ [ UITableView alloc ] initWithFrame: tableViewFrame style: UITableViewStyleGrouped ];
schoolDistrictTableView_.delegate = self;
schoolDistrictTableView_.dataSource = self;
//节次
lessonSectionTableView_ = [ [ UITableView alloc ] initWithFrame: CGRectMake( 150 , 220 , lessonSectionTextField_.frame.size.width , 140 ) style: UITableViewStyleGrouped ];
lessonSectionTableView_.delegate = self;
lessonSectionTableView_.dataSource = self;
tableViewFrame.origin.y += dudaoTextFieldDistance;
//教室类型
classTypeTableView_ = [ [ UITableView alloc ] initWithFrame: tableViewFrame style: UITableViewStyleGrouped ];
classTypeTableView_.delegate = self;
classTypeTableView_.dataSource = self;
tableViewFrame.origin.y += dudaoTextFieldDistance;
//教室
lessonClassroomTableView_ = [ [ UITableView alloc ] initWithFrame: tableViewFrame style: UITableViewStyleGrouped ];
lessonClassroomTableView_.delegate = self;
lessonClassroomTableView_.dataSource = self;
//*----------------------------------------------------------------------------------------*//
}
以下只是解析xml的方法,另外需要其他函数来启动以下解析xml的方法
#pragma mark *********************************解析xml*************************************
//遍历xml的节点
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
//判断elementName与string-array是否相等
if ( [ elementName isEqualToString: @"string-array" ] )
{
[ classTypeMutableArray_ addObject: [ attributeDict objectForKey: @"name" ] ];
}
//查询指定对象是否存在
storingCharacterData_ = [ elementsToParse_ containsObject: elementName ];
}
//节点有值则调用此方法
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ( storingCharacterData_ )
{
[ workingPropertyString_ appendString: string ];
//把一个字符串接在另一个字符串的末尾
}
}
//当遇到结束标记时,进入此句
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ( storingCharacterData_ )
{
//NSString的方法,去掉字符串前后的空格
NSString* trimmedString = [ workingPropertyString_ stringByTrimmingCharactersInSet: [ NSCharacterSet whitespaceAndNewlineCharacterSet ] ];
//将字符串置空
[ workingPropertyString_ setString:@"" ];;
if ( [ elementName isEqualToString: @"item" ] )
{
[ lessonClassroomMutableArray_ addObject: trimmedString ];
// NSLog( @"%@", trimmedString );
}
}
//遇到string-array时
if ( [ elementName isEqualToString: @"string-array" ] )
{
if ( [ lessonClassroomMutableArray_ count ])
{
[ allTheClassroomMutableArrar_ addObject: [ NSArray arrayWithObject: lessonClassroomMutableArray_ ] ];
//先释放内存
[ lessonClassroomMutableArray_ release ];
lessonClassroomMutableArray_ = [ [ NSMutableArray alloc ] init ];
}
}
}
//**********************************************************************//
这里就是先选择了对应的xml文件名,接着就开始调用解析xml的方法。
#pragma mark -
#pragma mark Table Delegate Methods
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
int row = [ indexPath row ];
if ( tableView == schoolDistrictTableView_ )
{
NSString *schoolDistrictName = [ schoolDistrictList_ objectAtIndex: row ];
[ schoolDistrictTableView_ removeFromSuperview ];
schoolDistrictTextField_.text = schoolDistrictName;
schoolNumber_ = schoolDistrictTextField_.text ;
schoolNumber_ = [ self getDistrictNum ];
// NSLog( @"%@", schoolNumber_ );
//*********************************解析xml**************************************
//尝试xml
//初始化用来临时存储从xml中读取的字符串
workingPropertyString_ = [ NSMutableString string ];
//初始化用来存储解析后的xml文件
workingArray_ = [ NSMutableArray array ];
//从资源文件中获取xml文件
NSString *strPathXml = [[NSBundle mainBundle] pathForResource: schoolDistrictName ofType:@"xml"];
//将xml文件转换成data类型
xmlData_ = [ [ NSData alloc ] initWithContentsOfFile: strPathXml ];
//初始化待解析的xml
parserXML_ = [ [ NSXMLParser alloc ] initWithData: xmlData_ ];
//初始化需要从xml中解析的元素
elementsToParse_ = [ NSArray arrayWithObjects:@"string-array",@"item", nil ];
//设置xml解析代理为self
[ parserXML_ setDelegate: self ];
//开始解析之前清空数组
[ classTypeMutableArray_ removeAllObjects ];
//初始化存放所有课室二维数组
allTheClassroomMutableArrar_ = [ [ NSMutableArray alloc ] init ];
//开始解析
//这里就跳到上面所用到解析xml的三个方法
[ parserXML_ parse ];//调用解析的代理方法
//以字典形式存放对应的所有课室
allTheClassroomDictionary_ = [ [ NSDictionary alloc ] initWithObjects: allTheClassroomMutableArrar_ forKeys: classTypeMutableArray_ ];
//更新tableview
[ classTypeTableView_ reloadData ];
// NSLog( @"%@",allTheClassroomDictionary_ );
}
else if( tableView == classTypeTableView_ )
{
NSString *classTypeName = [ classTypeMutableArray_ objectAtIndex: row ];
[ classTypeTableView_ removeFromSuperview ];
classTypeTextField_.text = classTypeName;
// NSLog( @"%@",[ allTheClassroomDictionary_ objectForKey: classTypeName ] );
[ lessonClassroomMutableArray_ removeAllObjects ];
[ lessonClassroomMutableArray_ addObject: [ allTheClassroomDictionary_ objectForKey: classTypeName]]; //从字典中获取对应的数组
// NSLog( @"%@",lessonClassroomMutableArray_ );
// NSLog( @"%@", [ [ lessonClassroomMutableArray_ objectAtIndex: 0 ] objectAtIndex: 0 ]);
[ lessonClassroomTableView_ reloadData ];
}
else if( tableView == lessonClassroomTableView_ )
{
NSString *lessonclassroomName = [ [ [ lessonClassroomMutableArray_ objectAtIndex: 0 ] objectAtIndex: 0 ] objectAtIndex: row ];
[ lessonClassroomTableView_ removeFromSuperview ];
lessonClassroomTextField_.text = lessonclassroomName;
}
else
{
NSString *lessonSectionlist = [ lessonSectionList_ objectAtIndex: row ];
[ lessonSectionTableView_ removeFromSuperview];
lessonSectionTextField_.text = lessonSectionlist;
}
}
- ios 解析xml 并且运用了字典和可变数组存放数据
- iOS开发之 字典和可变字典初解
- IOS 请求数据解析 XML 和 JSON
- iOS 数据解析 JSON 和 XML
- iOS xml数据解析
- iOS解析xml数据
- 23>IOS数据解析---------之JSON和XML解析
- ios开发系列之XML解析和JSON解析数据
- 字典里有个数组,数组里面存放着几个不相同的字典模型怎么用MJExtension解析,
- IOS--JSON数据解析成字典
- IOS-13-XML解析代码(标准版)_另附XML和JSON均解析为字典数据源代码
- ios XML/Jason数据解析
- iOS 数据解析 JSON XML
- iOS XML,JOSN数据解析
- 玩转iOS开发 - JSON 和 Xml 数据解析
- iOS开发-JSON和XML的数据解析
- OC中的数组、字典和集合解析
- "@"在数组、字典中的运用
- 实现新闻信息的修改和添加功能
- Hibernate 实现distinct
- 浅析CPU中断技术
- Android 中使用ListView和CheckBox进行批量操作
- Hibernate in action阅读笔记-吵吵冷饭-持久化对象
- ios 解析xml 并且运用了字典和可变数组存放数据
- SQL Server高级内容之子查询和表链接
- 异步加载图片
- makefile 文件模版
- 对RESTful Web API的理解与设计思路
- Shell 编程11(IO重定向)
- 人云我亦云
- 小程序教你深刻理解&&与&, ||和|
- java键盘输入