【问题标题】:NSXMLParser parser:didStartElement not triggered when parsing xmlNSXMLParser 解析器:解析 xml 时未触发didStartElement
【发布时间】:2012-02-18 19:44:59
【问题描述】:

我正在尝试解析 xml 文件并且没有收到任何错误,但是在尝试读取它时,没有触发 parser:didStartElement 事件。我做错了什么?感谢帮助。

- (void)viewDidLoad
        {
            [super viewDidLoad];

            // xml connect
            NSURL *url = [[NSURL alloc] initWithString:@"http://www.test.com/list.xml"];
            NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];

            //Start parsing the XML file.
            BOOL success = [xmlParser parse];

            if(success)
                NSLog(@"No Errors");
            else
                NSLog(@"Error!");
        }

        // reading xml...

        - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
          namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
            attributes:(NSDictionary *)attributeDict {

            if([elementName isEqualToString:@"main"]) {
                //Initialize the array.
                apps = [[NSMutableArray alloc] init];
            }
            else if([elementName isEqualToString:@"prog"]) {

                //Extract the attribute here.
                idUsuari = [attributeDict objectForKey:@"Id"];

                NSLog(@"ID: %@", idUser);
            }
        }

【问题讨论】:

    标签: objective-c xcode cocoa-touch ios5 xml-parsing


    【解决方案1】:

    请在再次运行后将其添加到 Info.plist 中

    【讨论】:

      【解决方案2】:

      声明你当前的类符合NSXMLParserDelegate,然后

      [xmlParser setDelegate:self];
      

      在你解析之前,让解析器知道可以调用你实现的委托方法。

      例如

      - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
            namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
              attributes:(NSDictionary *)attributeDict
      

      【讨论】:

        【解决方案3】:

        您尚未将视图控制器设置为 XML 解析器的委托:

        [xmlParser setDelegate:self];
        

        在你分配/初始化之后。没有这个,解析器不知道将委托消息发送给谁。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-14
          • 1970-01-01
          • 2012-02-13
          • 2012-09-02
          相关资源
          最近更新 更多