初始化方法:
Initializes a parser with the XML content referenced by the given URL.
- initWithData:
Designated Initializer
Initializes a parser with the XML contents encapsulated in a given data object.
Initializes a parser with the XML contents from the specified stream and parses it..
一个简单的xml文件解析
实例:
.h
#import <Foundation/Foundation.h>
@interface MyXMLParser : NSObject<NSXMLParserDelegate>
@property (nonatomic,strong) NSMutableArray * arrM;
-(void)test;
@end
#import "MyXMLParser.h"
#import "Student.h"
@interface MyXMLParser()
{
NSMutableString * _elementStr;
Student * student;
}
@end
@implementation MyXMLParser
-(void)test
{
NSString * path = [[NSBundle mainBundle]pathForResource:@"test" ofType:@"xml"];
NSXMLParser * parser = [[NSXMLParser alloc]initWithContentsOfURL:[NSURL URLWithString:path]];
parser.delegate = self;
[parser parse];
}
#pragma mark - 解析开始
-(void)parserDidStartDocument:(NSXMLParser *)parser
{
_arrM = [NSMutableArray array];
_elementStr = [NSMutableString string];
}
#pragma mark -解析完成
-(void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"%@",_arrM);
}
#pragma mark -
-(void)parser:(NSXMLParser *)parser didStartElement:(nonnull NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(nonnull NSDictionary<NSString *,NSString *> *)attributeDict
{
if ([elementName isEqualToString:@"student"]) {
student = [[Student alloc]init];
}
[_elementStr setString:@""];
}
#pragma mark 循环查找节点内容
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
// 拼接字符串
[_elementStr appendString:string];
}
#pragma mark 一个节点完成
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSString *result = [NSString stringWithString:_elementStr];
if ([elementName isEqualToString:@"student"]) {
[_arrM addObject:student];
} else if ([elementName isEqualToString:@"name"]){
student.name = result;
} else if ([elementName isEqualToString:@"sex"]) {
student.sex = result;
}
}
#pragma mark - 出错
-(void)parser:(NSXMLParser *)parser validationErrorOccurred:(NSError *)validationError
{
[_arrM removeAllObjects];
NSLog(@"%@",@"出现错误 ");
NSLog(@"%@",validationError.description);
}
@end
其他的代理方法不一一详述