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

XML解析

发布时间:2020-12-16 00:16:07 所属栏目:百科 来源:网络整理
导读:XML解析NSXMLParser解析过程实例化NSXMLParser,传入从服务器接收的XML数据定义解析器代理解析器解析通过解析代理方法完成XML数据的解析///////////////////////////////////////////////////////////////NSXMLParser解析代理方法// 1. 开始解析XML文档- (vo
XML解析
NSXMLParser解析过程

实例化NSXMLParser,传入从服务器接收的XML数据
定义解析器代理
解析器解析
通过解析代理方法完成XML数据的解析

///////////////////////////////////////////////////////////////

NSXMLParser解析代理方法
// 1. 开始解析XML文档
- (void)parserDidStartDocument:

// 2. 开始解析某个元素,会遍历整个XML,识别元素节点名称
- (void)parser:didStartElement:namespaceURI:qualifiedName:attributes:
// 3. 文本节点,得到文本节点里存储的信息数据,对于大数据可能会接收多次!为了节约内存开销
- (void)parser:foundCharacters:
// 4. 结束某个节点,存储从parser:foundCharacters:方法中获取到的信息
- (void)parser:didEndElement:namespaceURI:qualifiedName:
注意:在解析过程中,2、3、4三个方法会不停的重复执行,直到遍历完成为止

// 5. 解析XML文档结束
- (void)parserDidEndDocument:
// 6. 解析出错
- (void)parser:parseErrorOccurred:

///////////////////////////////////////////////////////////////
案例:(这只是代码,功能没有验证)

/**
 *  XML解析
 */
- (void)xmlWithRequest
{
    NSString *xmlTxt = @"<?xml version="1.0" encoding="UTF-8"?><recipe><recipename>Ice Cream Sundae</recipename><ingredlist><listitem><quantity>3</quantity><itemdescription>chocolate syrup or chocolate fudge</itemdescription>    </listitem>    <listitem>    <quantity>1</quantity>    <itemdescription>nuts</itemdescription>    </listitem>    <listitem>   <quantity>1</quantity>    <itemdescription>cherry</itemdescription>    </listitem>    </ingredlist>    <preptime>5 minutes</preptime>    </recipe>";
    
    //1、获取解析器
    NSURL *url = [NSURL URLWithString:xmlTxt];
    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
    
    //2、设置代理(将代理完成)
    parser.delegate = self;
    
    //3、开始解析
    [parser parse];
    
}

// 1. 开始解析XML文档
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
    NSLog(@"开始解析");
}

// 2. 开始解析某个元素,会遍历整个XML,识别元素节点名称
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    NSLog(@"开始节点:%@,%@",elementName,attributeDict);
}

// 3. 文本节点,得到文本节点里存储的信息数据,对于大数据可能会接收多次!为了节约内存开销
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    NSLog(@"%@",string);
}

// 4. 结束某个节点,存储从parser:foundCharacters:方法中获取到的信息
//注意:在解析过程中,2、3、4三个方法会不停的重复执行,直到遍历完成为止
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    NSLog(@"开始节点:%@",elementName);
}

// 5. 解析XML文档结束
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
    NSLog(@"结束解析");
}

// 6. 解析出错
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{
    NSLog(@"错误处理");
}

(编辑:李大同)

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

    推荐文章
      热点阅读