2012-10-12 11 views
2

我必須在一個視圖解析兩個XML文件,所以我使用兩個NSXMLParsers來獲得它。但他問題m是一個解析器得到認可,第二個解析器沒有得到承認...我的意思是在調試器通過這行[parser1 parse]之後,它應該到代理didStartElement,foundcharacters和didEndElement,但在我的情況下,調試器沒有進入這些代理。它只是跳轉到[parser1 release] stmnt.So那些代表是沒有得到認可的parser1.Y是這樣嗎? 我寫了這個:許多NSXMLParsers在一個單一的視圖xcode

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; 
    } 

第一個解析器得到認可和獲得data.But第二分析器didStartElement是沒有得到認可......這可能是什麼可能的原因?

+0

兩個URL是相同的XML結構還是不同的? – Codesen

+0

不同的網址和不同的結構,我已編輯的代碼。請看看 – Honey

+0

不同的URL是好的。我在詢問有關XML文件的標籤名稱 – Codesen

回答

2

我解決它通過myself.Actually我宣佈一個字符串,並通過一定的參考價值it.While解析它會檢查,如果條件得到真的,那麼它解析.. 這是我做過什麼:

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:Url];  
[parser setDelegate:self]; 
[parser setShouldProcessNamespaces:NO]; 
[parser setShouldReportNamespacePrefixes:NO]; 
[parser setShouldResolveExternalEntities:NO]; 
[email protected]"1"; 
[parser parse]; 
[parser release]; 

    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:Url1];  
[parser setDelegate:self]; 
[parser setShouldProcessNamespaces:NO]; 
[parser setShouldReportNamespacePrefixes:NO]; 
[parser setShouldResolveExternalEntities:NO]; 
[email protected]"2"; 
[parser parse]; 
[parser release]; 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
if([email protected]"1") 
{ 
    //do something 
} 
if([email protected]"2") 
{ 
    //do something 
    } 
    } 

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 


    if([email protected]"1") 
    { 
     //do something 
    } 
    if([email protected]"2") 
    { 
     //do something 
    } 
    } 


    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 

    if([email protected]"1") 
    { 
    //do something 
    } 
    if([email protected]"2") 
    { 
     //do something 
    } 
    } 
+0

如果你看到我的評論,我就面臨同樣的問題,那麼請我想和你分享一下。我有4個網站。 – jamil

+0

http://stackoverflow.com/questions/14995533/how-to-parse-multiple-xml-files-in-iphone請看我的問題.. – jamil

相關問題