如何使用AFNetworking 3.0解析XML数据

时间:2018-07-05 07:44:45

标签: ios objective-c xml xml-parsing afnetworking-3

我正在做一个简单的项目来使用此a link显示天气报告 我实现了以下代码以获取结果...

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:@"https://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php?wsdl" parameters:nil progress:nil success:^(NSURLSessionDataTask * task, id responseObject) {
    NSData * data = (NSData *)responseObject;
    NSLog(@"Response String: %@", [NSString stringWithUTF8String:[data bytes]]);
 }failure:^(NSURLSessionDataTask *  operation, NSError *  error) {
    NSLog(@"Error the result is unfound in the database %@", error);

}];

在上面的代码中,我终于检索了XML,但是我不知道如何解析它并使它显示在表格视图中...我是ios开发的新手,有人可以帮我做什么来获取数据并在表格视图中显示它。.

1 个答案:

答案 0 :(得分:0)

每个XML文件(如属性列表)都可以转换为NSDictionary,我是开发人员,但是,如果xml中包含数据,则可以将其转换为NSDictionary

在Swift 4中:

do {
   if let plist = try PropertyListSerialization.propertyList(from: plistData, 
    format: nil)
        as? NSDictionary  {
            // Successfully read  list.
            print(plist)

        } else {
            print("not a dictionary")
        }
} catch let error {
    print("not a plist:", error.localizedDescription)
}

在Objective-C中:

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"myPlist.plist"];

if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
    plistPath = [[NSBundle mainBundle] pathForResource:@"myPlist" ofType:@"plist"];
}

NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
  

在这种情况下,您可以传递数据而不是Plist

现在您可以将数据缓存到模型中,并在UITableView中显示它们

祝你好运;)

相关问题