【问题标题】:XML parsing using NSXMLParser in iphone?在 iphone 中使用 NSXMLParser 解析 XML?
【发布时间】:2012-10-19 09:22:52
【问题描述】:

我正在解析 XML 响应。但我没有得到想要的结果。不明白我哪里出错了? 我的 XML 响应如下所示:

<List>   
    <User>
         <Id>1</Id>
    </User>
    <User>
      <Employee>
          <Name>John</Name>
          <TypeId>0</TypeId>
          <Id>0</Id>
      </Employee> 
         <Id>0</Id>
     </User>
</List> 

由此我想要 Id(1) 和 Name(John) 的值。我不想要 Id(0)

我的解析代码是:

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

    if ([elementName isEqualToString:@"List"]) 
    {
        arr=[[NSMutableArray alloc] init];
        drr=[[NSMutableDictionary alloc] init]; 

    }
   srr=[[NSMutableString alloc] init];
   } 


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


    [srr appendString:string];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

    if([elementName isEqualToString:@"Id"])
    {

        [drr setObject:srr forKey:@"Id"];
        [srr release],srr=nil;
        return;
    }    

    if([elementName isEqualToString:@"Name"])
    {

        [drr setObject:srr forKey:@"Name"];
        [srr release],srr=nil;
        [arr addObject:drr]; 

        return;
    } 

    if([elementName isEqualToString:@"List"])
    {
       [drr release];

     }

    [srr release],srr=nil;

   }

我希望输出是:

(
{
Name="John";
Id="1";
}
)

但我是这样的:

(
        {
        Name = John;
        Id = "0";
    },
        {
        Name = John;
        Id = "0";
    }
)

我该怎么做?

【问题讨论】:

  • 使用这个链接[xml解析示例][1][1]:stackoverflow.com/questions/13117711/…
  • 您的示例中列出的 XML 非常奇怪。根据格式,它看起来像有 2 个用户(id 0 和 id 1),并且用户 0 有/是一个名为 John 的员工,其 id 也是 0,并且是 id 0 类型。这更奇怪的是结果是您想要“Name=John:Id=1”。我可以理解,在许多情况下您无法发布您的真实 XML 数据,但更接近真实的内容肯定会帮助我们帮助您。
  • 但是我从服务 url 得到这个响应,我必须照原样做..我无法更改服务。请帮助..

标签: iphone xcode4 xml-parsing nsxmlparser


【解决方案1】:

我建议你使用TBXML 而不是 NSXMLParser。它更快更容易使用。

【讨论】:

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