iOS XML编写器类

And*_*rew 7 xml iphone objective-c

我想创建一个使用关卡系统的游戏.所以我想存储我的关卡并且能够在游戏中更改它们(以保存状态).所以我决定使用XML来存储关卡.我发现NSXmlParser类用于从XML读取,但我找不到保存级别状态的编写器.在我的游戏中,关卡状态和关卡非常相似(我有很多可移动的对象),所以我不想存储与它所属的关卡分开的关卡状态数据.问题是我无法找到一种方法来轻松修改iPhone上的XML文件.也许我正在使用糟糕的方法.

Dav*_*ong 5

如果你把数据扔进去NSDictionary,你可以做(​​有警告):

[myDictionary writeToFile:pathToPlist atomically:YES];
Run Code Online (Sandbox Code Playgroud)


Tho*_*sRS 5

尝试iOS的开源XML流编写器:

  • 用Objective-C编写,单个.h.和.m文件
  • 一个@protocol用于名称空间支持,一个用于没有

例:

// 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];
Run Code Online (Sandbox Code Playgroud)

这会生成以下XML字符串:

<Root>Text content for root element</Root>
Run Code Online (Sandbox Code Playgroud)

  • 每个人的麻烦越少越好.我已经添加了GNU all-permissive许可证,因为它不像任何第三方更改将很快就会对库提出. (2认同)

cod*_*ark 5

我建议使用KissXML.作者以与您类似的情况开始,并围绕libxml创建了一个NSXML兼容的API包装器.他讨论的选项,并决定在这里在他的博客.


Ben*_*hen 3

您可以使用 C 库libxml2来读取和写入 XML。下面是一个快速介绍:Cocoa Samurai:通过 libXML2 获得一些 XML 的喜爱

但是,您是否考虑过使用 CoreData 或实现该NSCoding协议?NSCoding添加到现有的类会更容易。