0

我有以下 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!!!");

但是,m 在 gdb 中将输出作为“错误错误错误”。我是 Objective C 的新手,无法解决这个错误。有人可以帮忙吗?谢谢。

4

2 回答 2

1

// 尝试使用 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>
        }

     }
于 2012-06-04T14:03:05.517 回答
1

您是否检查过“路径”或“数据”是否为零?

此外,如果 'parse' 没有成功,您可以使用方法 ' parserError ' 来获取一个 NSError 对象,该对象将包含有关问题的更多信息。从 NSXMLParser 类参考:

parserError
返回一个 NSError 对象,您可以从中获取有关解析错误的信息。

- (NSError *)parserError

讨论
您可以在解析操作异常终止后调用该方法来确定错误原因。

可用性
适用于 iOS 2.0 及更高版本。

在此之后,您应该能够在您的 NSError* 对象上调用方法“ localizedDescription ”以获取有关该问题的更多信息。

我希望这有帮助!

于 2012-06-04T14:10:09.127 回答