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

xml

发布时间:2020-12-16 00:22:29 所属栏目:百科 来源:网络整理
导读:- (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路径 N



- (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.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,才赋值. } }

(编辑:李大同)

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

    推荐文章
      热点阅读