GDataXML的使用

   IOS中用于解析XML文件的方法有很多,在SDK中也有自带的方法,但是大家更偏于应用第三方的库,一方面高效,另外一方面也更方便使用。下面就介绍一下其中一个第三方库GDataXML的使用,给自己留念!

将GDataXML库添加到自己的工程中得步骤:

1.将两个文件GDataXMLNode.h和GDataXMLNode.m拖拽到工程中。

GDataXML的使用_第1张图片

2.到Target-->Build Phases-->Link Binary With Libraries路径下添加库 libxml2.dylib 到工程中。

3.到Target-->Build Settings-->Header Search Paths下,双击之后点击+按钮,添加 /usr/include/libxml2 到工程中,如下图:

GDataXML的使用_第2张图片

4.到Target-->Build Settings-->Other Linker Flags下,添加 -lxml2 到工程中。

到此,配置结束,引用文件的头文件即可。


下面介绍一下这个库的使用:

我的XML文件如下:

GDataXML的使用_第3张图片

解析代码如下:

//获取工程目录的xml文件
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"question" ofType:@"xml"];
    NSData *xmlData = [[NSData alloc] initWithContentsOfFile:filePath];
    
    //使用NSData对象初始化
    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData encoding:NSUTF8StringEncoding error:nil];
    GDataXMLElement *rootElement = [doc rootElement];
    //获取根节点下的节点(rating)
    NSMutableArray *ratingAry = [[NSMutableArray alloc] initWithArray:[rootElement elementsForName:@"rating"]];
    
    for (GDataXMLElement *rating in ratingAry) {
        //rating节点的name属性
        NSString *ratingName = [[rating attributeForName:@"name"] stringValue];
        NSLog(@"rating name is:%@",ratingName);
        
        NSArray *questionAry = [rating elementsForName:@"question"];
        
        for (GDataXMLElement *question in questionAry) {
            //获取title节点的值
            GDataXMLElement *titleElement = [[question elementsForName:@"title"] objectAtIndex:0];
            NSString *title = [titleElement stringValue];
            
            //获取a,b,c,d节点的值
            GDataXMLElement *aElement = [[question elementsForName:@"a"] objectAtIndex:0];
            NSString *a = [aElement stringValue];
            
            GDataXMLElement *bElement = [[question elementsForName:@"b"] objectAtIndex:0];
            NSString *b = [bElement stringValue];
            
            GDataXMLElement *cElement = [[question elementsForName:@"c"] objectAtIndex:0];
            NSString *c = [cElement stringValue];
            
            GDataXMLElement *dElement = [[question elementsForName:@"d"] objectAtIndex:0];
            NSString *d = [dElement stringValue];
            
            GDataXMLElement *parseElement = [[question elementsForName:@"parse"] objectAtIndex:0];
            NSString *parse = [parseElement stringValue];
        }
    }





你可能感兴趣的:(ios,xml,xcode,库)