XML & JSON
X## XML & JSON XMLSAX 解析1.创建 XML 解析对象 NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"bookstore" withExtension:@"xml"];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:fileURL];
2.设置 XML 解析对象 BOOL flag = [ xmlParser parse ];
if (!flag){
NSL(@"xmlParser parser error!!");
}
NSXMLParser 对象的代理方法:
@interface ViewController () <NSXMLParserDelegate>
@property (nonatomic,strong) NSMutableArray *bookStore;
@property (nonatomic,strong) QYBooks *currentBook;
@property (nonatomic,strong) NSString *content;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view,typically from a nib.
}
- (IBAction)saxParse:(UIButton *)sender {
// 1.获取 XML 文件路径
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"bookstore" withExtension:@"xml"];
// 2.创建 XML 文件解析器
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:fileURL];
// 3.设置 XML 的委托
parser.delegate = self;
// 4.开始解析
[parser parse];
}
#pragma mark - xml parser delegate
//解析开始是触发
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
_bookStore = [NSMutableArray array];
}
//遇见元素标签时触发
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
// 创建当前的 book 对象
if ([elementName isEqualToString:kBook]) {
_currentBook = [[QYBooks alloc] init];
_currentBook.category = attributeDict[kCategory];
}
if ([elementName isEqualToString:kTitle]) {
_currentBook.lang = attributeDict[kLang];
}
}
//遇见文本内容时触发
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
_content = string;
}
// 遇见元素结束标签是触发
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:kBook]) {
[_bookStore addObject:_currentBook];
}else if ([elementName isEqualToString:@"bookstore"]){
NSLog(@"解析即将完成");
} else
{
[_currentBook setValue:_content forKey:elementName];
}
}
// 解析结束时触发
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"%@",_bookStore);
}
// 解析错误时触发
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{
NSLog(@"%@",parseError);
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |