//通过dom解析方式为xml增加节点 (sax只可以读取,不可以添加)
- (void)domAddNote{
//获得文件路径
NSString *xmlPath = [[NSBundle mainBundle] pathForResource:@"XMLDemo" ofType:@"xml"];
//将文件转换为data类型
NSData *xmlData = [NSData dataWithContentsOfFile:xmlPath];
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:nil];
GDataXMLElement *rootElement = [doc rootElement];
//创建一个我们需要添加的节点(student)
GDataXMLElement *createElement = [GDataXMLElement elementWithName:@"student"];
//为student节点添加属性
[createElement addAttribute:[GDataXMLElement attributeWithName:@"attribute" stringValue:@"aa"]];
//为student节点添加子节点
GDataXMLElement *nameNode = [GDataXMLElement elementWithName:@"name" stringValue:@"美丽"];
[createElement addChild:nameNode];
GDataXMLElement *ageNode = [GDataXMLElement elementWithName:@"age" stringValue:@"18"];
[createElement addChild:ageNode];
GDataXMLElement *sexNode = [GDataXMLElement elementWithName:@"sex" stringValue:@"男"];
[createElement addChild:sexNode];
//将创建好的student节点,添加到根节点,也就是students节点下
[rootElement addChild:createElement];
//得到所有的student节点
NSArray *stuElementArray = [rootElement elementsForName:@"student"];
//遍历得到每个student节点,以便获得student的子节点的值。
for (GDataXMLElement* item in stuElementArray) {
//获得student节点的attribute属性值
NSLog(@"%@",[[item attributeForName:@"attribute"] stringValue]);
NSArray *nameArray = [item elementsForName:@"name"];
GDataXMLElement *nameElement = [nameArray objectAtIndex:0];
NSString *name = [nameElement stringValue];
//取出age
NSArray *ageArray = [item elementsForName:@"age"];
GDataXMLElement *ageElement = [ageArray objectAtIndex:0];
NSString *age = [ageElement stringValue];
//取出sex
NSArray *sexArray = [item elementsForName:@"sex"];
GDataXMLElement *sexElement = [sexArray objectAtIndex:0];
NSString *sex = [sexElement stringValue];
NSLog(@"name=%@---age=%@----sex=%@",name,age,sex);
}
}
SAX解析
SAX:Simple API for XML,基于事件驱动的解析方式,逐行解析数据(采用协议回调机制). NSXMLParser1 NSXMLParser是iOS自带的XML解析类,采用SAX方式解析数据
2 解析过程由NSXMLParserDelegate协议方法回调
3 解析过程:开始标签->取值->结束标签->取值
//遵循协议
@interface rootViewController ()<NSXMLParserDelegate>
//xml解析之sax解析
-(void)xmlSaxMethod{
//得到需要解析的数据
NSString *xmlPath = [[NSBundle mainBundle] pathForResource:@"XMLDemo" ofType:@"xml"];
NSData *xmlData = [NSData dataWithContentsOfFile:xmlPath];
//创建sax解析的工具类对象
NSXMLParser *saxParser = [[NSXMLParser alloc] initWithData:xmlData];
//指定代理
saxParser.delegate = self;
//开始解析 sax解析是一个同步的过程
BOOL isParse = [saxParser parse];
if (isParse) {
NSLog(@"解析完成");
}else{
NSLog(@"解析失败");
}
NSLog(@"我是在解析结束下面");
}










