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 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>