하나의 뷰에서 두 개의 XML 파일을 구문 분석해야하므로 두 개의 NSXMLParser를 사용하여 두 개의 NSXMLParser를 사용하여 가져온다. 그러나 그는 하나의 파서가 인식되고 두 번째 파서가 인식되지 않는 것을 알 수있다. 디버거가이 줄을 통과하면 [parser1 parse] 대리자 didStartElement, foundcharacters 및 didEndElement로 이동해야하지만 제 경우에는 디버거가 해당 대리자를 입력하지 않은 것입니다. 단순히 [parser1 release] stmnt.So에 위임됩니다. 이러한 대리자는 파서에게 인정받지 못 했어. 그래? 나는이 쓴 :단일 뷰에서 많은 NSXMLParser
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:Url];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
[parser release];
NSXMLParser *parser1 = [[NSXMLParser alloc] initWithContentsOfURL:Url1];
[parser1 setDelegate:self];
[parser1 setShouldProcessNamespaces:NO];
[parser1 setShouldReportNamespacePrefixes:NO];
[parser1 setShouldResolveExternalEntities:NO];
[parser1 parse];
[parser1 release];
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"TimeList"])
{
arr1=[[NSMutableArray alloc] init];
drr1=[[NSMutableDictionary alloc] init];
}
if([elementName isEqualToString:@"Company"])
{
drr1=[[NSMutableDictionary alloc] init];
}
srr1=[[NSMutableString alloc] init];
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
[srr1 appendString:string];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"ID"])
{
[drr1 setObject:srr1 forKey:@"ID"];
[srr1 release],srr1=nil;
return;
}
if([elementName isEqualToString:@"Company"])
{
[arr1 addObject:drr1];
}
if([elementName isEqualToString:@"TimeList"])
{
[drr1 release];
}
[srr1 release],srr1=nil;
}
- (void)parser1:(NSXMLParser *)parser1 didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"categorylist"])
{
arr2=[[NSMutableArray alloc] init];
drr2=[[NSMutableDictionary alloc] init];
}
if([elementName isEqualToString:@"lookup"])
{
drr2=[[NSMutableDictionary alloc] init];
}
srr2=[[NSMutableString alloc] init];
}
-(void)parser1:(NSXMLParser *)parser1 foundCharacters:(NSString *)string{
[srr2 appendString:string];
}
- (void)parser1:(NSXMLParser *)parser1 didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"Code"])
{
[drr2 setObject:srr2 forKey:@"Code"];
[srr2 release],srr2=nil;
return;
}
if([elementName isEqualToString:@"lookup"])
{
[arr2 addObject:drr2];
}
if([elementName isEqualToString:@"categorylist"])
{
[drr2 release];
}
[srr2 release],srr2=nil;
}
첫 번째 파서가 인식지고 두 번째 파서 didStartElement의 data.But을 받고 인정 받고되지 않습니다 ... 무엇 가능한 이유가 될 수 있을까?
두 URL은 같은 XML 구조를 가지고 있습니까? – Codesen
diffent URL 및 다른 구조, 나는 코드를 편집했습니다. 제발 봐 – Honey
다른 URL이 좋습니다. 나는 XML 파일의 태그 이름에 대해 묻고있다 – Codesen