【IOS中XML解析】NSXMLParser方法解析XML文件案例

前端之家收集整理的这篇文章主要介绍了【IOS中XML解析】NSXMLParser方法解析XML文件案例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

IOS 中的XML解析

@H_403_2@

@H_403_2@ 首先说一下,在IOS中XML解析和在Android中的SAX或者Pull解析差别不大,都是基于事件的解析方式。

@H_403_2@ 首先,定义一个对象来表示XML的文档结构

@H_403_2@ XMLElement.h

@H_403_2@

#import<Foundation/Foundation.h>

@interfaceXMLElement :NSObject

//标签名称

@property(@H_404_55@nonatomic,@H_404_55@strong)NSString*name;

//标签的文本(注意在上一级标签和下一级标签之间室友文本的)

NSString*text;

//标签属性

NSDictionary*attributes;

//标签集合

NSMutableArray*subElements;

//上一级标签

@H_404_55@strong)XMLElement*parent;

@end

@H_403_2@ XMLElement.m

@H_403_2@

"XMLElement.h"@implementationXMLElement

@synthesizename,text,attributes,subElements,parent;

-(NSMutableArray*) subElements

{

@H_404_55@if(subElements==@H_404_55@nil){

subElements= [[NSMutableArrayalloc]init];

}

@H_404_55@returnsubElements;

}

XML文件内容放在/Supporting File/的Group下面。名称为person.xml

@H_403_2@

<?xml version="1.0"@H_404_55@encoding="UTF-8"@H_404_55@?>

<root>

@H_404_55@<personid@H_404_55@="1"@H_404_55@>

@H_404_55@<firstName>zhang@H_404_55@</firstName>

@H_404_55@<lastName>sansan@H_404_55@</lastName>

@H_404_55@<age>21@H_404_55@</age>

@H_404_55@</person>

"2"@H_404_55@<firstName>li@H_404_55@<lastName>sisisi@H_404_55@<age>31@H_404_55@</person>

</root>

@H_403_2@ 解析的ViewController.h

<UIKit/UIKit.h>

@interfaceViewController :UIViewController<NSXMLParserDelegate>

//解析器对象

NSXMLParser*parser;

//根元素

XMLElement*rootElement;

//当前的元素

XMLElement*currentElementPointer;

解析的ViewController.m

"ViewController.h""UIColor+ColorWithARGB.h"@interfaceViewController()

@end

@implementationViewController

-(@H_404_55@id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil

{

@H_404_55@self= [@H_404_55@superinitWithNibName:nibNameOrNilbundle:nibBundleOrNil];

@H_404_55@if(@H_404_55@self!=@H_404_55@nil){

@H_404_55@self.title=@"XML解析";

}

@H_404_55@return@H_404_55@self;

}

- (@H_404_55@void)viewDidLoad

{

[viewDidLoad];

view.backgroundColor= [UIColorr:0xA5g:b:0x52];

NSString*xmlFilePath = [[NSBundlemainBundle]pathForResource:@"person"ofType:@"xml"];

NSData*data = [[NSDatainitWithContentsOfFile:xmlFilePath];

@H_404_55@self.parser= [[NSXMLParserinitWithData:data];

parser.delegate=@H_404_55@self;

@H_404_55@if([parserparse]){

NSLog(@"The XML is Parsed");

NSMutableString*str = [[NSMutableStringinit];

[strappendFormat:@"%@\n",116)">rootElement.name];

NSMutableArray*subs =subElements;

@H_404_55@for(@H_404_55@inti =0;i < [subscount];i++){

XMLElement*personElement = [subsobjectAtIndex:i];

[str@"\tname:%@",personElement.name];

[str@",text:%@\n",116)">text];

NSArray*subPersonElements = personElement.subElements;

@H_404_55@intj =0;j < [subPersonElementscount];j++){

XMLElement*subElement = [subPersonElementsobjectAtIndex:j];

[str@"\t\tname:%@",subElement.text];

}

}

@"======解析结果:%@",str);

}@H_404_55@else{

@"Failed to parse the XML");

}

}

- (@H_404_55@void)didReceiveMemoryWarning

{

[didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

//文档开始

-(@H_404_55@void)parserDidStartDocument:(NSXMLParser*)parser

{

rootElement=@H_404_55@nil;

currentElementPointer=@H_404_55@nil;

}

//文档结束

-(@H_404_55@void)parserDidEndDocument:(//元素开始

- (@H_404_55@void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary*)attributeDict

{

rootElement==@H_404_55@nil){

rootElement= [[XMLElementinit];

rootElement;

}@H_404_55@else{

XMLElement*newElement = [[init];

newElement.parent=currentElementPointer;

[currentElementPointer.subElementsaddObject:newElement];

currentElementPointer= newElement;

}

name= elementName;

attributes= attributeDict;

@"name:%@",elementName);

}

//元素结束

- (NSXMLParser*)parser didEndElement:(NSString*)qName

{

parent;

@"end name:%@",0)">//解析文本,会多次解析,每次只解析1000个字符,如果多月1000个就会多次进入这个方法

- (NSXMLParser*)parser foundCharacters:(NSString*)string

{

textlength] >0){

text= [stringByAppendingString:string];

}@H_404_55@else{

text= [stringWithString:string];

}

@"string:%@",string);

}

@end

猜你在找的XML相关文章