Parse XML files in IOS

Source: Internet
Author: User

Here to use NSXMLParser to parse, this is apple's xml parsing library, there is a reference: http://www.raywenderlich.com/553/xml-tutorial-for-ios-how-to-choose-the-best-xml-parser-for-your-iphone-project

Add an xml file to Xcode:

<?xml version="1.0" encoding="ISO-8859-1"?><root><Shop shoplocation="beijing">    <id>001</id>    <name>John</name>    <url>Reminder</url>    <info>Don't forget the meeting!</info></Shop><Shop shoplocation="dongcheng">    <id>002</id>    <name>Jack</name>    <url>cc</url>    <info>how are you!</info></Shop><Shop shoplocation="haidian">    <id>003</id>    <name>Tom</name>    <url>bb</url>    <info>I am fine!</info></Shop></root>



Read it first

   NSString* path =  [[NSBundle mainBundle] pathForResource:@"shop" ofType:@"xml"];    NSData *data = [[NSData alloc] initWithContentsOfFile:path options:(NSDataReadingMappedIfSafe) error:nil];    NSXMLParser *parser=[[NSXMLParser alloc] initWithData:tmpdata];<span style="white-space:pre"></span>[parser setDelegate:self];[parser parse];[parser release];    [self parseShopListFromResponse:data];


Then parse:

@ Property (nonatomic, retain) ShopData * tmpShop; @ property (nonatomic, retain) NSMutableString * currentString; @ property (nonatomic, retain) NSString * currentTag; # pragma mark NSXMLParser delegate methods-(void) parser :( NSXMLParser *) parser principal :( NSString *) elementName namespaceURI :( NSString *) namespaceURI principal :( NSString *) Principal: (NSDictionary *) attributeDict {self. currentTag = elementName; if ([elementName isinclutostring: @ "root"]) {self. tmpList = [[NSMutableArray alloc] init];} else if ([elementName is1_tostring: @ "Shop"]) {self. tmpShop = [[ShopData alloc] init]; <span style = "white-space: pre"> </span> <span style = "font-family: Arial, Helvetica, sans-serif; "> </span> <span class =" s1 "style =" font-family: Arial, Helvetica, sans-serif; "> NSArray </span> <span style =" font-family: Arial, Helvetica, sans-serif; "> * array = [attributeDict </span> <span class =" s2 "style =" font-family: Arial, Helvetica, sans-serif; "> allKeys </span> <span style =" font-family: Arial, Helvetica, sans-serif; ">]; </span> <p class = "p1"> <span style = "white-space: pre "> </span> <span class =" s1 "> NSString </span> * key = [array <span class =" s2 "> lastObject </span>]; </p> <p class = "p1"> <span style = "white-space: pre "> </span> <span class =" s1 "> NSString </span> * s = [attributeDict <span class =" s2 "> objectForKey </span>: key]; </p> <p class = "p1"> <span style = "white-space: pre "> </span> <span class =" s3 "> self </span>. <span class = "s4"> tmpShop </span>. <span class = "s4"> info </span> = s; // obtain the ShopLocation attribute </p >}}-(void) parser :( NSXMLParser *) parser foundCharacters :( NSString *) string {if (self. currentString = nil) {self. currentString = [[NSMutableString alloc] initWithString: @ ""];} if ([self. currentTag isEqualToString: @ "name"] | [self. currentTag isEqualToString: @ "id"] | [self. currentTag isEqualToString: @ "url"] | [self. currentTag isEqualToString: @ "info"]) {[self. currentString appendString: string] ;}- (void) parser :( NSXMLParser *) parser didEndElement :( NSString *) elementName namespaceURI :( NSString *) namespaceURI qualifiedName :( NSString *) qName {if ([elementName isinclutostring: @ "Shop"]) {[self. tmpList addObject: self. tmpShop]; [self. tmpShop release];} if ([elementName isinclutostring: @ "name"]) {self. tmpShop. name = [self. currentString copy]; [self. currentString setString: @ ""];} else if ([elementName isinclutostring: @ "id"]) {self. tmpShop. _ id = [self. currentString copy]; [self. currentString setString: @ ""];} else if ([elementName isinclutostring: @ "url"]) {self. tmpShop. url = [self. currentString copy]; [self. currentString setString: @ ""];} else if ([elementName isinclutostring: @ "info"]) {self.tmpShop.info = [self. currentString copy]; [self. currentString setString: @ ""] ;}}-(void) parserDidStartDocument :( NSXMLParser *) parser {NSLog (@ "Start parsing xml file");}-(void) parserDidEndDocument :( NSXMLParser *) parser {[self. tableView reloadData]; NSLog (@ "xml file parsed ");}


The Shopdata structure is:

@property (nonatomic,retain) NSString *name;@property (nonatomic,retain) NSString *url;@property (nonatomic,retain) NSString *_id;@property (nonatomic,retain) NSString *info;@property (nonatomic, retain) UIImage *appIcon;



The code can be downloaded at http://download.csdn.net/detail/baidu_nod/7585037without points required

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.