2012-03-09 89 views
0

如果可能的話,我有一個接近15個和更多的xml文件在一個文件夾內解析所有文件?如果我想分析多個文件,我在下面設置路徑。我如何設置該文件夾文件的路徑?如何在iPhone中使用NSxml解析器解析多個xml文件

這段代碼對於單個文件xml解析器來說工作正常。

NSString *playlistfilePath = [[NSBundle mainBundle] pathForResource:@"CT8OkzhF8qmEYGe2" ofType:@"xml"]; 
NSData *playlistfileData = [NSData dataWithContentsOfFile:playlistfilePath]; 
NSString *playlistxmlFile = [[NSString alloc] initWithData:playlistfileData encoding:NSASCIIStringEncoding]; 

//parsing the XML 
PlaylistXmlParser *playlistparser = [[PlaylistXmlParser alloc] init]; 
[playlistparser parseXMLFile:playlistxmlFile]; 

所有XML文件都具有相同的結構和相同的元素。請親引導我。

+0

你想解析一個文件中的兩個或多個XML? – Hector 2012-03-09 05:22:12

+0

我想你會需要爲每個進程創建線程,這樣所有的解析進程將在後臺同時運行。 – Mrunal 2012-03-09 05:24:41

+0

@PiyushPatel不,我想分析多個我想設置該文件作爲路徑。這就是我需要的。 – 2012-03-09 05:31:08

回答

0

試試這個:

NSXMLParser *xmlParser = [[[NSXMLParser alloc] initWithData:playlistfileData]autorelease]; 

PlaylistXmlParser *parser = [[PlaylistXmlParser alloc] initXMLParser:@"xmlname"]; 
[xmlParser setDelegate:parser]; 

在PlaylistXmlParser.m文件

- (PlaylistXmlParser *) initXMLParser:(NSString *)name { 

[super init]; 
xmlname =name; 

return self; 

}

now in every methods in PlaylistXmlParser.m file : 

if ([xmlname isEqualToString:@"xmlname"]) { 
    //store data 
} 
else if([xmlname isEqualToString:@"xmlname_1"]){ 
    //store data 

}

+0

initXMLParser:@「xmlname」];我想給這裏的文件夾文件我的意思是n個文件我怎麼能給。 – 2012-03-09 05:45:31

+0

只是識別爲哪個XML解析,所以你可以在解析 – Hector 2012-03-09 05:47:59

+0

分離,你也可以這樣使用:initXMLParser:[NSString stringWithFormat:@「%d」,i]]; – Hector 2012-03-09 05:49:54

1

在的NSXMLParser對象的基礎上寫解析的邏輯: -

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 
     //check with switch or if else condition which NSXMLParser object is using this delegate. 
} 

如像上面的NSXMLParser的所有代表有一個參數作爲對象的NSXMLParser。

+0

謝謝你的回覆,你是否支持我的問題。這不是這個問題的答案。我已經提到我可以解析一個文件,我想解析多個文件。 – 2012-03-09 05:47:45

+1

創建多個對象,然後在使用委託對象即將到來之後檢查相應的文件數據,然後編寫業務邏輯來解析數據。 – 2012-03-09 05:51:10

0

@moorthy使用pathForResourcesType:上一個NSBundle方法inDirectory得到數組o f路徑,然後爲數組中的每個單獨路徑創建解析器類的實例並解析文件。 [[NSBundle mainbundle]pathForResourcesType:@"xml" inDirectory:"Your directory Path"]
這將返回一個數組......希望它可以幫助你