iOS XML writer class

By | December 18, 2017

I want to create a game, that will use a level system. So i want to store my levels and to be able to change them during the game (to save the state). So i decided to use XML for storing levels. I found NSXmlParser class for reading from XML, but i can’t find a writer to save the level state. In my game the level state and the level are very similar ( i have a lot of movable objects), so i don’t wan’t to store the level state data separated from the level it belongs. The problem is that i can’t find a way to easily modify XML files on iPhone. Maybe i’m using a bad approach.


You can use the C libary libxml2 to read and write XML. Here’s a quick intro: Cocoa Samurai: Getting Some XML Love with libXML2.

However, have you considered using CoreData or implementing the NSCoding protocol? NSCoding would be easier to add to existing classes.


If you throw the data in an NSDictionary, you could do (with caveats):

[myDictionary writeToFile:pathToPlist atomically:YES];


Try the open source XML stream writer for iOS:

  • Written in Objective-C, a single .h. and .m file
  • One @protocol for namespace support and one for without


// allocate serializer
XMLWriter* xmlWriter = [[XMLWriter alloc]init];

// start writing XML elements
[xmlWriter writeStartElement:@"Root"];
[xmlWriter writeCharacters:@"Text content for root element"];
[xmlWriter writeEndElement];

// get the resulting XML string
NSString* xml = [xmlWriter toString];

This produces the following XML string:

<Root>Text content for root element</Root>


I would recommend using KissXML. The author started in a similar situation as you and created an NSXML compatible API wrapper around libxml. He discusses the options and decisions here on his blog.

Leave a Reply

Your email address will not be published. Required fields are marked *