簡體   English   中英

無法使用NSXML Parser進行解析

[英]Unable To Parse Using NSXML Parser

我有以下XML文件:

<?xml version="1.0"? encoding="UTF-8"?>
<api>
        <count count="55" />
        <spa>
            <opt>aa</opt>
            <opt>bb</opt>
            <opt>cc</opt>

        </spa>
</api>

M使用以下代碼行:

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"space.xml"];

NSData *data = [[NSData alloc] initWithContentsOfFile:path];

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data];

//Initialize the delegate.
XMLParser *theParser = [[XMLParser alloc] initXMLParser];

//Set delegate
[xmlParser setDelegate:theParser];

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

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

但是,在gdb中輸出為“錯誤錯誤錯誤”。 我是Objective C的新手,無法解決錯誤。 有人可以幫忙嗎? 謝謝。

//嘗試使用NSXMLParser

NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:[NSURL URLWithString:@"YourURL"]];
[parser setDelegate:self];
[parser parse];

//以下是為您提供數據的代表

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

  {    
            if([elementName isEqualToString:@"spa"]){
           got = YES; //got is a BOOL and here we have encountere start tag i.e <spa>
     }
  }

    -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
     {
          if(got)
          {
                 NSLog(@"the Data is = %@",string);
          }
     }

    -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
     {
         if([elementName isEqualToString:@"spa"])
        {
           got = NO; //Here we have encountered the end tag </spa>
        }

     }

你檢查過' path '或' data '是否為零?

此外,如果'parse'沒有成功,您可以使用方法' parserError '來獲取一個NSError對象,該對象將包含有關該問題的更多信息。 從NSXMLParser類引用:

parserError
返回一個NSError對象,您可以從中獲取有關解析錯誤的信息。

 - (NSError *)parserError 

討論
在解析操作異常終止以確定錯誤原因后,您可以調用此方法。

可用性
適用於iOS 2.0及更高版本。

在此之后,您應該能夠在NSError *對象上調用方法“ localizedDescription ”以獲取有關該問題的更多信息。

我希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM