我有以下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 中将输出作为"错误错误错误"。我是目标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>
}
}
您是否检查过"路径"或"数据"是否为零?
此外,如果"parse"没有成功,则可以使用"parserError"方法获取NSError对象,该对象将保存有关问题的更多信息。来自 NSXMLParser 类参考:
解析器错误
返回一个 NSError 对象,从中可以获取有关分析错误的信息。- (NSError *)parserError
讨论
可以在分析操作异常终止后调用此方法以确定错误原因。可用性
在 iOS 2.0 及更高版本中可用。
在此之后,您应该能够在 NSError* 对象上调用方法"localizedDescription"以获取有关该问题的更多信息。
我希望这有帮助!