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

【iOS开发】原生XML解析

发布时间:2020-12-16 08:45:57 所属栏目:百科 来源:网络整理
导读:初始化方法: - initWithContentsOfURL: 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. - initWithS

初始化方法:

- initWithContentsOfURL:

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.






- initWithStream:

Initializes a parser with the XML contents from the specified stream and parses it..


一个简单的xml文件解析


实例:

.h

#import<Foundation/Foundation.h>

@interfaceMyXMLParser :NSObject<NSXMLParserDelegate>

@property(nonatomic,strong)NSMutableArray* arrM;

-(void)test;

@end


.m

#import"MyXMLParser.h"

#import"Student.h"

MyXMLParser()

{

NSMutableString* _elementStr;

Student* student;

}

@end

@implementationMyXMLParser

-(void)test

{

NSString* path = [[NSBundlemainBundle]pathForResource:@"test"ofType@"xml"];

NSXMLParser* parser = [[alloc]initWithContentsOfURL:[NSURLURLWithString:path]];

parser.delegate=self;

[parserparse];

}

#pragma mark - 解析开始

-(void)parserDidStartDocument:(NSXMLParser*)parser

{

_arrM= [NSMutableArrayarray];

_elementStr= [NSMutableStringstring];

}

#pragma mark -解析完成

-(void)parserDidEndDocument:(NSXMLParser*)parser

{

NSLog(@"%@",_arrM);

}

#pragma mark -

-(void)parser:(NSXMLParser*)parser didStartElement:(nonnullNSString*)elementName namespaceURI:(nullableNSString*)namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary<NSString*,NSString*> *)attributeDict

{

if([elementNameisEqualToString:@"student"]) {

student= [[Studentalloc]init];

}

[_elementStrsetString@"" #pragma mark 循环查找节点内容

- (NSXMLParser*)parser foundCharacters:(NSString*)string

{

// 拼接字符串

[_elementStrappendString:string];

}


#pragma mark 一个节点完成

- (NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName

{

NSString*result = [NSStringstringWithString:_elementStr];

@"student"]) {

[_arrMaddObject:student];

}else@"name"]){

student.name= result;

}@"sex"]) {

sex= result;

}

}

#pragma mark - 出错

-(NSXMLParser*)parser validationErrorOccurred:(NSError*)validationError

{

[removeAllObjects];

NSLog(@"%@");

description);

}

其他的代理方法不一一详述

(编辑:李大同)

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

    推荐文章
      热点阅读