9.12. Parsing XML with NSXMLParser

Problem

You want to parse an XML snippet or document.

Solution

Use the NSXMLParser class.

Discussion

The NSXMLParser uses a delegate model to parse XML content. Let’s go ahead and create a simple XML file that contains the following data (save this file as MyXML.xml in your project):

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

  <person id="1">
    <firstName>Anthony</firstName>
    <lastName>Robbins</lastName>
    <age>51</age>
  </person>

  <person id="2">
    <firstName>Richard</firstName>
    <lastName>Branson</lastName>
    <age>61</age>
  </person>

</root>

Now define a property of type NSXMLParser:

#import <UIKit/UIKit.h>

@interface Parsing_XML_with_NSXMLParserAppDelegate
           : UIResponder <UIApplicationDelegate, NSXMLParserDelegate>

@property (nonatomic, strong) UIWindow *window;
@property (nonatomic, strong) NSXMLParser *xmlParser;

@end

You can also see that I have defined my app delegate as an XML parser delegate by conforming to the NSXMLParserDelegate protocol, which is required for a delegate object of an XML parser of type NSXMLParser. Now let’s read the MyXML.xml file from the disk and pass it to your XML parser:

- (BOOL)            application:(UIApplication *)application
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

  NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:@"MyXML"
                                  ofType:@"xml"];

  NSData *xml = [[NSData alloc] initWithContentsOfFile:xmlFilePath];

  self.xmlParser = [[NSXMLParser alloc] initWithData:xml];
  self.xmlParser.delegate = self;
  if ([self.

Get iOS 6 Programming Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.