views:

3365

answers:

5

Hello guys I'm looking for a way on the iPhone to parse an XML document using DOM. I have been using SAX with NSXMLParser but now I really want a DOM tree (or anything that can quickly translate the XML document into an NSDictionary)
Thanks for any help

A: 

libxml2 has a SAX parser in xmlParseChunk(). This framework is available for the iPhone from within Xcode. You'd need to do a little C to get this into an NSDictionary, though.

Alex Reynolds
+3  A: 

Unfortunately, NSXMLDocument (which does what you're asking) does not exist on the iPhone. You may have to roll your own parser using libxml2, or try something like TouchXML or KissXML.

Dave DeLong
+4  A: 

If you want to use libxml2 with an Objective-C front without SAX events, take a look at this useful set of wrapper functions.

You issue an XPath query to your XML document object and get back Foundation class objects: NSArray, NSString, and NSDictionary, e.g.:

NSArray *queriedBuckets = PerformXMLXPathQuery(responseData, @"//*[local-name()='Buckets']/*[local-name()='Bucket']");

These functions help merge the speed of libxml2 with the readability and usability of Objective-C code.

Alex Reynolds
A: 

Have you tried WonderXML: http://wonderxml.googlecode.com/

Luke Du
A: 

I suggest looking at the Google Data API for Objective-C (iPhone) at http://code.google.com/p/gdata-objectivec-client/

In particular, look at these files which define the GDataXMLNode class:

http://gdata-objectivec-client.googlecode.com/svn/trunk/Source/XMLSupport/

Phil Oliver