第三方库GDataXMLNode的配置及使用(XML解析)
1、具体配置过程如下:
第一步、把下载好的GDataXMLNode.h和GDataXMLNode.m拖到工程里面,随便把要解析的文件放到工程里面,可以解析网络请求的数据,我只举本地的例子
第二步、打开GDataXMLNode.h,找到如下图所示的地方,如果没有,不要慌,按照我下面描述的步骤操作,图中标出的四个地方都是我们要配置的重要信息
第三步、导入依赖库 ,找到工程target ,然后点击Build Phases,选择第三项Link Binary With Libraries展开,点击+号,在弹出框中输入XML进行搜索,选择libxml2.2.tbd或者libxml2.tbd都可以,然后点击Add
第四步、找到Build Settings,在搜索框搜索head,回车找到Search Paths里面的Header Search Paths这一选项,然后双击弹出框那个箭头位置,点击+号,复制上面第2个重要信息里面的内容,粘贴到第5里面的框内,第6为配置以后的信息
第五步、继续在Build Settings里面搜索框搜索other,见下图1,然后找到Other Linker Flags,见下图2,然后双击弹出框那个箭头位置,点击+号,复制第二步里面的第4个信息粘贴到框里面,回车效果见下图5
第六步、找到Build Phases ,展开Complie Sources, 双击弹出框的位置,输入-fno-objc-arc,此命令的意思为在ARC状态下也能使用GDataXMLNode第三方类库
配置结束,现在你应该可以调用GDataXMLNode类库的方法了
2、这是我读取本地的XML文件的代码如下,网络请求的数据使用类似
#import "ViewController.h"
//导入头文件
#import "GDataXMLNode.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//导入头文件
#import "GDataXMLNode.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//初始化可变集合,在ViewController.h里面定义一个可变集合arrM
self.arrM=[NSMutableArray array];
//获取路径
NSString *path=[[NSBundle mainBundle] pathForResource:@"person" ofType:@"xml"];
NSData *xmldata=[[NSData alloc] initWithContentsOfFile:path];
//使用NSdata对象初始化
GDataXMLDocument *doc=[[GDataXMLDocument alloc] initWithData:xmldata options:0 error:nil];
//获取根节点
GDataXMLElement *rootelement=[doc rootElement];
//获取根节点下的节点
NSArray *User=[rootelement elementsForName:@"User"];
for (GDataXMLElement *user in User)
{
//获取User节点的id属性
NSString *userID=[[user attributeForName:@"id"]stringValue];
NSLog(@"%@",userID);
//获取name节点的值
GDataXMLElement *namelement=[[user elementsForName:@"name"]objectAtIndex:0];
NSString *name=[namelement stringValue];
NSLog(@"%@",name);
//获取age节点的值
GDataXMLElement *agelement=[[user elementsForName:@"age"]objectAtIndex:0];
NSString *age=[agelement stringValue];
NSLog(@"%@",age);
//将的到的name,age,id先放到一个字典,然后在拼接成一个集合
NSMutableDictionary *dic=[NSMutableDictionary dictionary];
[dic setObject:userID forKey:@"id"];
[dic setObject:name forKey:@"name"];
[dic setObject:age forKey:@"age"];
[self.arrM addObject:dic];
}
NSLog(@"%@",self.arrM);
NSString *path=[[NSBundle mainBundle] pathForResource:@"person" ofType:@"xml"];
NSData *xmldata=[[NSData alloc] initWithContentsOfFile:path];
//使用NSdata对象初始化
GDataXMLDocument *doc=[[GDataXMLDocument alloc] initWithData:xmldata options:0 error:nil];
//获取根节点
GDataXMLElement *rootelement=[doc rootElement];
//获取根节点下的节点
NSArray *User=[rootelement elementsForName:@"User"];
for (GDataXMLElement *user in User)
{
//获取User节点的id属性
NSString *userID=[[user attributeForName:@"id"]stringValue];
NSLog(@"%@",userID);
//获取name节点的值
GDataXMLElement *namelement=[[user elementsForName:@"name"]objectAtIndex:0];
NSString *name=[namelement stringValue];
NSLog(@"%@",name);
//获取age节点的值
GDataXMLElement *agelement=[[user elementsForName:@"age"]objectAtIndex:0];
NSString *age=[agelement stringValue];
NSLog(@"%@",age);
//将的到的name,age,id先放到一个字典,然后在拼接成一个集合
NSMutableDictionary *dic=[NSMutableDictionary dictionary];
[dic setObject:userID forKey:@"id"];
[dic setObject:name forKey:@"name"];
[dic setObject:age forKey:@"age"];
[self.arrM addObject:dic];
}
NSLog(@"%@",self.arrM);
}
初学者总结!