Heim > Backend-Entwicklung > XML/RSS-Tutorial > Code-Sharing systematischer Methoden zum Parsen von XML-Daten

Code-Sharing systematischer Methoden zum Parsen von XML-Daten

黄舟
Freigeben: 2017-03-22 16:50:11
Original
1426 Leute haben es durchsucht

XML ist ein selbstbeschreibendes Datenaustauschformat. Es handelt sich um ein sehr wichtiges Datenaustauschformat, das seit vielen Jahren in verschiedenen Computersprachen verwendet wird. XML ähnelt HTML mit Tag-Paaren und das Format ist strenger als HTML, es beginnt mit einem und endet mit einem . Der analysierte Inhalt von

ist:

<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>
Nach dem Login kopieren

Die Daten wurden im Voraus gelesen und in Daten gespeichert.
Erstellen Sie eine Klasse, erben Sie von NSObject und nennen Sie sie 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;
Nach dem Login kopieren

Erstellen Sie eine andere Klasse, ebenfalls von NSObject erben, mit dem Namen userParser, um das Lesen von XML-Dateien

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
Nach dem Login kopieren

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]]];
}
Nach dem Login kopieren

im Viewcontroller zu implementieren , erstellen Sie eine Instanz von userparser Object implementiert die Datenanalyse über die parserWithString-Methode

userParser *uparser=[[userParser alloc]init];
[uparser parserWithString:user];
Nach dem Login kopieren

Hinweis: Das getrennte Schreiben von Datenanalyse und Schnittstellenanzeige trägt dazu bei, die Kopplung des Programms zu reduzieren und ist außerdem konsistent mit MVCProgrammierungModus.

Das obige ist der detaillierte Inhalt vonCode-Sharing systematischer Methoden zum Parsen von XML-Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage