如何使用NSxml解析器解析iPhone中的多个xml文件

时间:2012-03-09 05:18:03

标签: iphone xml-parsing xcode4.2

如果可能的话,我在一个文件夹中有近15个以上的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文件都具有相同的结构和相同的元素。

3 个答案:

答案 0 :(得分: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对象。

答案 1 :(得分: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 

}

答案 2 :(得分:0)

@moorthy在NSBundle方法上使用pathForResourcesType:inDirectory来获取路径数组,然后为数组中的每个单独路径创建一个解析器类的实例并解析该文件。 [[NSBundle mainbundle]pathForResourcesType:@"xml" inDirectory:"Your directory Path"]
这将返回一个数组......希望它可以帮助你