• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - NSXMLParser 的错误处理

[复制链接]
菜鸟教程小白 发表于 2022-12-12 20:57:11 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在从我的旧文件构建一个新项目。我忘了复制我的配置文件,当然它不起作用。我使用 NSXMLparser 读取配置文件,但没有正确报告错误。

使用 NSXMLParser 检测文件访问错误的正确方法是什么?

我正在使用错误的 URL 初始化 NSXMLParser。初始化器返回一个有效的对象。

当我调用 [xml parse] 时,它返回 FALSE 表示错误。

但是 [xml parserError] 方法返回 null

我没有看到检测文件访问错误的良好编码序列。

根据要求,使用的代码:

- (void)parserNSXMLParser *)parser parseErrorOccurredNSError *)parseError
{  // Does not print with missing file
    NSLog(@"Location File Error %@", parseError) ;
}


-(id) initWithURLNSURL *) url // For my class
{
    self = [super init] ;
    if (self)
    {
       xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url] ;
       xmlParser.delegate = self ;
       if (![xmlParser parse])
       {
            NSError *error = [xmlParser parserError] ;

            NSLog (@"Error parsing '%@'\n%@", url, error) ; // Error is null
       }
    }
    return self ;
 }



Best Answer-推荐答案


为什么不使用 NSXMLParserDelegate 上的方法来识别您的错误? (除非您想验证您传递给解析器的 URL 先验。)

一个简短且功能不完整的示例:

#import <Foundation/Foundation.h>

@interface Foo:NSObject <NSXMLParserDelegate>
@property (nonatomic, strong) NSXMLParser *parser;
@end

@implementation Foo

- (void)parserNSXMLParser *)parser parseErrorOccurredNSError *)parseError {
    NSLog(@"Error - %@",parseError.userInfo);
}

@end

int main(int argc, char *argv[]) {
    @autoreleasepool {
        Foo *f = [Foo new];
        NSURL *u = [NSURL URLWithString"http://badurl.alan"];
        f.parser = [[NSXMLParser alloc] initWithContentsOfURL:u];
        f.parser.delegate = f;
        [[f parser] parse];
    }
}

将以下内容打印到控制台:

2014-03-28 05:33:11.082 Untitled[2521:507] Error - { NSXMLParserErrorColumn = 36; NSXMLParserErrorLineNumber = 95; NSXMLParserErrorMessage = "StartTag: invalid element name\n"; }

关于ios - NSXMLParser 的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22705821/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap