2012-03-09 81 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"]
这将返回一个数组......希望它可以帮助你