Maison  >  Article  >  développement back-end  >  Partage de code de méthodes systématiques pour l'analyse de données XML

Partage de code de méthodes systématiques pour l'analyse de données XML

黄舟
黄舟original
2017-03-22 16:50:111380parcourir

XML est un format d'échange de données auto-descriptif. Il s'agit d'un format d'échange de données très important qui est utilisé dans divers langages informatiques depuis de nombreuses années. XML est similaire au HTML, avec des paires de balises, et le format est plus strict que le HTML, commençant par a8093152e673feb7aba1828c43532094 et se terminant par 5f557f62ae7ac7a14e0b1cb564790dfc. Le contenu analysé de

est :

<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>
Les données ont été lues et stockées dans data à l'avance

Créez une classe,
héritez de NSObject, nommez-la 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;
Créez-en une autre. classe, hérite également de NSObject , nommée userParser, pour implémenter la lecture des fichiers 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]]];
}
Dans le viewcontroller. , créez une instance de userparser

Object implémente l'analyse des données via la méthode parserWithString

userParser *uparser=[[userParser alloc]init];
[uparser parserWithString:user];
Remarque : l'écriture séparée de l'analyse des données et de l'affichage de l'interface permet de réduire le couplage du programme et est également cohérente avec le mode

MVCProgrammation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn