- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.view.backgroundColor = [UIColor yellowColor];
self.studentArray = [[NSMutableArray alloc] initWithCapacity:1];
//1获取xml路径
NSString * xmlPath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];
//2根据xml路径,初始化XMLString
NSString * xmlString = [NSString stringWithContentsOfFile:xmlPath encoding:NSUTF8StringEncoding error:nil];
//3将解析的内容读入GDataXMLDocument对象中
GDataXMLDocument * docMent = [[GDataXMLDocument alloc] initWithXMLString:xmlString options:0 error:nil];
//4获取根节点
GDataXMLElement * rootElement = [docMent rootElement];
NSLog(@"++++++++++%@",rootElement);
//5获取根节点下的子节点(student);
NSArray * studentElments = [rootElement elementsForName:kStudent];
NSLog(@"%d",[studentElments count]);
for (GDataXMLElement * element in studentElments)
{
NSString * name = [[[element elementsForName:kName] firstObject] stringValue];
NSString * age = [[[element elementsForName:kAge] firstObject] stringValue];
NSString * sex = [[[element elementsForName:kSex] firstObject] stringValue];
Student * stu = [[Student alloc] init];
stu.name = name;
stu.age = age;
stu.sex = sex;
NSLog(@"%@",stu.name);
[self.studentArray addObject:stu];
}
for (Student * stu in self.studentArray)
{
NSLog(@"%@ %@ %@",stu.name, stu.sex,stu.age);
}
// xPath/代表绝对路径
// //代表相对路径
}
sax
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
//文件读写第一步,
NSString * filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];
NSData * data = [[NSData alloc] initWithContentsOfFile:filePath];
[filePath release];
//系统提供的解析类,解析SAX;
NSXMLParser * pleser = [[NSXMLParser alloc] initWithData:data];
pleser.delegate = self;
[pleser parse];//开始解析
}
#pragma mark NSXMLParserDelegate
// Document handling methods
//开始解析文档
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
NSLog(@"开始解析文档");
self.studentArray = [[NSMutableArray alloc] init];
}
//结束解析文档
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"结束解析文档");
for (Student * stu in self.studentArray) {
NSLog(@"%@ , %@ , %@",stu.name ,stu.age, stu.sex);
}
}
//解析开始标签(遇到开始标签,进入方法)
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;
{
NSLog(@"解析开始标签 StartElement:%@",elementName);
if ([elementName isEqualToString:kStudent])
{
self.student = [[Student alloc] init];
}
else if ([elementName isEqualToString:kName]|| [elementName isEqualToString:kSex]||[elementName isEqualToString:kAge])
{
self.isStore = YES;
}
}
//解析开始标签后面的内容.
//解析结束标签(遇到结束标签,进入方法)
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"解析结束标签 EndElement:%@",elementName);
if ([elementName isEqualToString:kStudent])
{
[self.studentArray addObject:self.student];
}
else if ([elementName isEqualToString:kName])
{
self.student.name = self.currentString;
}
else if ([elementName isEqualToString:kSex])
{
self.student.sex = self.currentString;
}
else if ([elementName isEqualToString:kAge])
{
self.student.age = self.currentString;
}
self.isStore = NO;
}
//解析开始标签后面的内容
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
//NSLog(@" 解析标签内容:%@",string);
if (self.isStore) {
self.currentString = string;//只有标签是name,sex,age,才赋值.
}
}