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
views:
3365answers:
5libxml2
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.
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.
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.
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/