我想等待NSXMLParser进程完成,然后继续其他进程。我使用NSXMLParser来解析XML数据。
这是我的代码:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
NSLog(@"Did start element");
if ( [elementName isEqualToString:@"FILENAME"])
{
XML_FIELD = FILENAME_CLOUD2;
NSLog(@"found rootElement");
return;
}
else if ( [elementName isEqualToString:@"UPLOADTIME"])
{
NSLog(@"found rootElement");
XML_FIELD = UPLOADTIME2;
return;
}
}
didEndElement():
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"Did end element");
if ([elementName isEqualToString:@"FILENAME"])
{
NSLog(@"rootelement end");
}
XML_FIELD = UNIMPORTANT2;
}
foudCharaters():
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if (XML_FIELD == FILENAME_CLOUD2)
{
NSLog(@"Value %@",string);
[FileCompletedArray insertObject:string atIndex:0];
}
else if (XML_FIELD == UPLOADTIME2)
{
NSLog(@"Value %@",string);
[UploadTimeArray insertObject:string atIndex:0];
}
}
上面的代码用于从NSXMLParser获取数据,但我的应用程序需要等待解析xml进程完成。我可以使用dispatch ()
吗?
答案 0 :(得分:7)
NSXMLParser
完全同步。当parse
方法返回时,解析已完成(或已失败并出现错误)。所以没有必要“等待”它完成。
答案 1 :(得分:1)
非常简单..
NSXMLParser *parser=[[NSXMLParser alloc] initWithData:data];
parser.delegate=self;
if([parser parse]){
NSLog(@"Parsing Finished");
}else{
NSLog(@"Parsing Failed");
}
Parser将调用委托函数
- (void)parserDidStartDocument:(NSXMLParser *)parser{
NSLog(@"Parsing started");
}
调用函数parse
时..