8.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. Let’s continue to synthesize our XML parser:

#import "Parsing_XML_with_NSXMLParserAppDelegate.h"

@implementation Parsing_XML_with_NSXMLParserAppDelegate

@synthesize window = _window;
@synthesize xmlParser;
...

Now 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" ...

Get iOS 5 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.