从URL获取XML文件并转换为NSData对象?

3
我需要从一个URL地址加载一个.xml文件,并将其存储在NSData对象中,以便使用我已经拥有的一些库进行进一步解析(但它们要求我将.xml文件作为NSData提供),我该怎么做?
URL地址的格式应该像这样:http://127.0.0.1/config.xml
2个回答

7

假设这是UTF-8数据。如果它是本地数据(即在包内),则需要使用类似以下代码:

NSError *error;
NSString* contents = [NSString stringWithContentsOfFile:PATHTOLOCALFILE 
                               encoding:NSUTF8StringEncoding
                               error:&error];
NSData* xmlData = [contents dataUsingEncoding:NSUTF8StringEncoding];

如果文件在远程站点上,可以尝试使用以下代码。需要注意的是,此代码是同步加载的。如果需要异步加载,则必须自己实现网络请求或使用像ASIHTTPConnection这样的工具来先下载文件。
NSError *error;
NSString* contents = [NSString stringWithContentsOfUrl:[NSURL URLWithString:URLOFXMLFILE] 
                               encoding:NSUTF8StringEncoding
                               error:&error];
NSData* xmlData = [contents dataUsingEncoding:NSUTF8StringEncoding];

4

我因为ARC而苦恼于被接受的答案,但这个解决方案非常好用。谢谢! - Jimmery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接