无法使用NSXMLParser检索xml值 [英] cant retrieve xml values using NSXMLParser

查看:36
本文介绍了无法使用NSXMLParser检索xml值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在xml中的php响应就是这种类型

My php response in xml is of this type

<users>
<username>myemail</username>
<password>mypass</password>
 </users>

现在这是我的parseUrl类

Now this is my parseUrl class

  NSURL *parserUrl = [[[NSURL alloc] initWithString:urlString] autorelease];
        NSXMLParser *parser = [[[NSXMLParser alloc] initWithContentsOfURL:parserUrl] autorelease];
        [parser setDelegate:self];



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



    if ( [elementName isEqualToString:@"users"]) 
    {
        return;
    }



    if ( [elementName isEqualToString:@"username"] ) 
    {
        NSString *val = [attributeDict  objectForKey:@"username"] ;    
      return;
    }

}

现在的问题是, attributeDict 给出了0对.该函数正在读取用户名,密码和用户,这意味着它可以进入此循环

Now the problem is, the attributeDict is giving 0 pairs. The function is reading username, password and users meaning it can get inside this loop

   if ( [elementName isEqualToString:@"username"] ) 
        {
            NSString *val = [attributeDict  objectForKey:@"username"] ;    
          return;
        }

但是我如何检索该节点的值?

But how can i retrieve the value of this node?

推荐答案

删除返回声明

并且attributeDict总是包含属性.

and attributeDict is alway contain attributes.

例如

此处"id"是用户的属性.

here 'id' is attribute of user.

要获取字符串值,您需要编写

to getting string value, you need to write

//take string variable in header file 'elementname'

NSString *elementname;

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

elementname = elementName;
}

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

    elementname = elementName;
}


-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

   if([elementname isEqualToString:@"username"])
   {
       NSLog(@"username : %@",string);
   }
   else if([elementname isEqualToString:@"password"])
   {
       NSLog(@"password : %@",string);
   }
}

这篇关于无法使用NSXMLParser检索xml值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆