如何使用objective-c编写xml并将其放入NSData对象中

时间:2012-02-28 01:07:13

标签: ios objective-c nsdata nsxmldocument

我一直在阅读来自Apple的大量ios文档,几乎所有与xml相关的代码都需要在其中创建一个包含xml数据的文件,或者通过连接接收xml然后更改它。

我想知道是否有一种方法可以只创建一些xml ..也许在一个字符串中,然后将其转换为NSData对象..我知道如何将NSString传递给NSData对象..那不是那么非常重要..目前痛苦的部分是如何创建我自己的xml而没有Apple说你需要的所有其他东西的简明例子......即归档或返回数据。

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

3 个答案:

答案 0 :(得分:1)

如果您指的是将Cocoa对象转换为XML,则需要尝试许多库。一个快速谷歌提出WonderXML,我之前没有使用它,但听起来这就是你想要的。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用:

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

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

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

iOS项目的信息文件是属性列表/ 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>Icon@2x.png</string>
        <string>Icon-iPad.png</string>
        <string>Icon-Small-50.png</string>
        <string>Icon-Small.png</string>
        <string>Icon-Small@2x.png</string>
    </array>
</dict>
</plist>