XML是一种自描述的数据交换格式。是一种非常重要的数据交换 格式,多年来一直用于各种计算机语言中。XML类似HTML,有一对对标签对,格式比HTML严谨,一个<>开始,一个</>结尾.

解析的内容为:

<users>
    <user id="001">
        <name>张三</name>
        <password>123456</password>
        <nickname>小张</nickname>
        <description>1111111111</description>
    </user>
     
    <user id="002">
        <name>张三</name>
        <password>2222222</password>
        <nickname>小四儿</nickname>
        <description>李四是个好学生</description>
    </user>
     
    <user id="003">
        <name>张三</name>
        <password>88888888</password>
        <nickname>小五</nickname>
        <description>1234567890</description>
    </user>
     
</users>

事先已将数据读取并存储在data中.
创建一个类,继承自NSObject,命名为userInfo

@property(nonatomic,copy)NSString *uID;
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *password;
@property(nonatomic,copy)NSString *nickname;
@property(nonatomic,copy)NSString *description;

再创建一个类,同样继承自NSObject,命名为userParser,实现xml文件的读取.

userParser.h

#import <Foundation/Foundation.h>
#import "user.h"
@interface userParser : NSObject<NSXMLParserDelegate>
//存储信息的数组
@property(nonatomic,retain)NSMutableArray *array;
//实例
@property(nonatomic,retain)user *people;
//创建字符串保存信息
@property(nonatomic,copy)NSMutableString *buffer;
//读取xml文件
-(void)parserWithString:(NSString *)string;
@end

userparser.m

#import "userParser.h"
 
@implementation userParser
-(void)parserWithString:(NSString *)string
{
    //使用系统XML解析方法
    NSXMLParser *parser=[[NSXMLParser alloc]initWithData:[string dataUsingEncoding:NSUTF8StringEncoding]];
    //设置代理
    parser.delegate=self;
    //开始解析
    [parser parse];
}
#pragma mark ---NSXMLParserDelegate---
//开始解析
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
    NSLog(@"it begin");
}
//解析结束
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
    NSLog(@"it is over");
    for (int i=0; i<_array.count; i++) {
        user *user=_array[i];
        NSLog(@"%@,%@,%@,%@,%@",user.uID,user.name,user.password,user.nickname,user.description);
    }
}
//遇到开始标签
//attributeDict标签属性
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if ([elementName isEqualToString:@"users"]) {
        _array=[[NSMutableArray alloc]init];
    }
    else if ([elementName isEqualToString:@"user"])
    {
        _people=[[user alloc]init];
        //<user id="3">
        _people.uID=[attributeDict objectForKey:@"id"];
    }
    else if ([elementName isEqualToString:@"name"])
    {
        _buffer=[[NSMutableString alloc]init];
    }
    else if ([elementName isEqualToString:@"password"])
    {
        _buffer=[[NSMutableString alloc]init];
    }
    else if ([elementName isEqualToString:@"nickname"])
    {
        _buffer=[[NSMutableString alloc]init];
    }
    else if ([elementName isEqualToString:@"description"])
    {
        _buffer=[[NSMutableString alloc]init];
    }
     
}
//结束标签
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if ([elementName isEqualToString:@"name"]) {
        _people.name=_buffer;
    }
    else if ([elementName isEqualToString:@"password"])
    {
        _people.password=_buffer;
    }
    else if ([elementName isEqualToString:@"nickname"])
    {
        _people.nickname=_buffer;
    }else if ([elementName isEqualToString:@"description"])
    {
        _people.description=_buffer;
    }
    else if ([elementName isEqualToString:@"user"])
    {
        [_array addObject:_people];
    }
}
//读取内容
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    //NSCharacterSet字符串结合,取出字符串中的空格
    [_buffer appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}

在viewcontroller中,创建userparser的实例对象,通过parserWithString方法实现数据解析

userParser *uparser=[[userParser alloc]init];
[uparser parserWithString:user];

注:将数据解析与界面显示分开写有助于减低程序的耦合,同时也符合MVC编程模式.

以上就是XML数据解析的系统方法的代码分享的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

  • 相关标签:XML,数据解析
  • 程序员必备接口测试调试工具:点击使用

    Apipost = Postman + Swagger + Mock + Jmeter

    Api设计、调试、文档、自动化测试工具

    网页生成APP,用做网站的技术去做APP:立即创建

    手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包

    • 上一篇:自定义XML动态配置程序的示例代码分享
    • 下一篇:详细介绍XML DTD于XML Schema学习的示例代码(图文)

    相关文章

    相关视频


    • 使用xmlhttp为网站增加域名查询功能的示例代码...
    • 四种XML解析方式详解
    • 基于PHP对XML的操作详解
    • XML和Tomcat的入门知识的详细介绍
    • XML数据解析的系统方法的代码分享
    • Vue3 事件修饰符
    • vue3 指令
    • vue3 基础语法
    • vue3 组合api和选项api介绍

    视频教程分类

    • php视频教程
    • html视频教程
    • css视频教程
    • JS视频教程
    • jQuery视频教程
    • mysql视频教程
    • Linux视频教程
    • Python视频教程
    • Laravel视频教程
    • Vue视频教程

    专题

    XML数据解析的系统方法的代码分享