如何使用objectiv-c编写xml并将其放置到NSData对象中

问题描述:

我一直在阅读苹果的ios文档堆,以及几乎每一个用xml处理的代码都需要使用xml创建一个文件数据或通过连接接收xml然后改变它。如何使用objectiv-c编写xml并将其放置到NSData对象中

我想知道是否有一种方法来创建一些xml ..也许在一个字符串中,然后将其转换为一个NSData对象..我知道如何将一个nssting传递到nsdata对象..那不是这是一个大问题..目前最痛苦的部分是如何创建自己的xml,而没有苹果说你需要的其他东西。文件或返回数据。

我目前还没有代码..我可能会做的是什么创建,可以接收一些信息,然后将它们传递到希望创建一个漂亮的XML字符串/数据对象的某些参数的方法..

如果你有任何示例代码,建议链接到体面的教程,这将是巨大的帮助:)

最简单的方法将使用NSPropertyListSerialization。将它传递给一个字典(或任何属性列表对象),它可以用Apple的属性列表格式生成XML(作为字符串或数据)。

如果您指的是将Cocoa对象转换为XML,那么有许多库可供尝试。快速谷歌带来了WonderXML,我以前没有使用它,但它听起来像这样做你想要的。

如果你不关心确切的XML格式,你可以使用NSKeyedArchiverNSPropertyListSerialization(如jtbandes写的),它可以将大多数Cocoa对象序列化为XML。如果您打算在其他某种环境或语言中阅读XML,我不会推荐这种方法。

您可以使用:

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag 

...写一个NSDictionary出到的.plist,这是与特定模式的XML文档。所有包含的对象都需要是NSData,NSDate,NSNumber,NSString,NSArray或NSDictionary的实例。

使用- (id)initWithContentsOfFile:(NSString *)path将XML/plist读回字典。

iOS项目的info文件是属性列表/ plist。他们看起来像这样,当在文本编辑器中查看:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>English</string> 
    <key>CFBundleDisplayName</key> 
    <string>App Name</string> 
    <key>CFBundleExecutable</key> 
    <string>${EXECUTABLE_NAME}</string> 
    <key>CFBundleIconFiles</key> 
    <array> 
     <string>Icon.png</string> 
     <string>[email protected]</string> 
     <string>Icon-iPad.png</string> 
     <string>Icon-Small-50.png</string> 
     <string>Icon-Small.png</string> 
     <string>[email protected]</string> 
    </array> 
</dict> 
</plist> 
+0

好吧..冷静,我想我明白你的建议,我将不得不现在试一试。我会让你知道我是怎么走的。 – HurkNburkS 2012-02-28 01:56:24