View Full Version : Using NSXMLNode, NSXMLElement, and NSXMLDocument?

Jul 16, 2008, 12:41 AM
I built my app for the device today and get errors around NSXMLNode, NSXMLElement, and NSXMLDocument. Those were recognized fine in the simulator. Any ideas?

Here is a post by someone else with a similar problem (but in the Mac Programming forum): http://forums.macrumors.com/showthread.php?t=506312

Jul 16, 2008, 12:37 PM
So, these are not included in the final SDK. NSXMLDocument is considered too heavy.

This supposedly brings DOM support and XPath to XML in the iphone: http://code.google.com/p/touchcode/wiki/TouchXML.

Jul 16, 2008, 12:55 PM
TouchXML is pretty slick. I found it to be an adequate replacement for NSXMLDocument. It's read-only: there's no serialization behaviors defined. It uses libxml2, so it should be nice and quick.

Otherwise, the recent releases included NSXMLParser, which might work for you if you just need a forward-only XML reader. It uses callbacks to notify your app about parsing milestones as it goes through the document.


Jul 18, 2008, 02:31 PM
NSXMLParser seems like a pretty useless class to me.

All it seems to be is bunch of HARD CODED if-else statements of comparing the element names.

My app originally used NSXMLDocument to receive xml response data that I looped through to fill up some NSDictionary's so I could put them inside UITableView -> Detail view.

I pretty much need to loop through the entire xml data set, which has at least 50 elements. If I were to use NSXMLParser, would I be expected to write

if ([element name isEqualToString:@"firstname"] {
currentString = [NSMutableString string];
} else if ...

50 times for both "didStartEelement" and "didEndElement"? Sounds pretty ridiculous to me. Correct me if I'm wrong.

Jul 18, 2008, 09:10 PM
You can use libxml2. That's what I do.
It's C only (not C++ or obj-c) so you have to manage memory carefully, but in return you get real DOM.