Home > Backend Development > XML/RSS Tutorial > Code sharing of systematic methods for XML data parsing

Code sharing of systematic methods for XML data parsing

黄舟
Release: 2017-03-22 16:50:11
Original
1428 people have browsed it

XML is a self-describing data exchange format. It is a very important data exchange format that has been used in various computer languages ​​for many years. XML is similar to HTML, with pairs of tags, and the format is stricter than HTML, starting with a <> and ending with a .

The parsed content is:

<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>
Copy after login

has been prepared in advance Read and store the data in data.
Create a class,Inheritfrom NSObject,name it 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;
Copy after login

Create another class, also inherit from NSObject,name it userParser , implement reading of xml files.

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
Copy after login

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]]];
}
Copy after login

In the viewcontroller, create an instance of userparserObject, Data parsing is implemented through the parserWithString method

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

Note: Writing data parsing and interface display separately helps reduce the coupling of the program, and it also conforms to theMVCprogramming pattern.

The above is the detailed content of Code sharing of systematic methods for XML data parsing. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template