标签:
第一步:引入动态库
第二步:拖入第三方文件
第三放文件网址 https://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/
根据文件的的要求在工程中添加相应的字段
// libxml includes require that the target Header Search Paths contain
//
// /usr/include/libxml2
//
// and Other Linker Flags contain
//
// -lxml2
这时引入的文件是MRC的,让其能在ARC的环境下运行需要更改设置
需要更改单个文件是否采用ARC来进行编译有两种情况,我们的实际情况就应用到了下面的第二种
两种情况
1.自己的旧项目没有使用ARC,但是引入的第三方库却是使用了ARC的。
2.自己的新项目使用了ARC,但是引入的第三方库或者以前写的代码却没有使用ARC。
这两种情况下,直接肯定是通不过编译的。可以通过升级旧项目,让其使用ARC来解决,但这个办法有时候会很麻烦。
有一个简单的办法就是,可以指定单个文件是否采用ARC来进行编译。
方法就是在Build Phase里面的Compile Source里面找到需要特殊处理的文件,加上编译选项(Compiler Flags),具体针对上面两种情况有所区别。
1.对于第一个情况,给采用了ARC的源文件,添加-fobjc-arc选项
2.对于第二种情况,添加-fno-objc-arc
准备工作已完成,这时可以就可以根据xml文件解析数据了
// 1. 获取文件的路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"StudentInfo_xml" ofType:@"txt"];
// 2.根据路径获取data类型的数据
NSData *data = [NSData dataWithContentsOfFile:path];
// 初始化数组
self.dataArray = [NSMutableArray array];
// 3.设置DOM解析
NSError *error = nil;
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error];
// 4.获取根节点
GDataXMLElement *rootElement = document.rootElement;
// 5.遍历获取相对应的子节点
for (GDataXMLElement *studentElement in rootElement.children) {
Student *stu = [Student new];
// 遍历子节点的子节点
for (GDataXMLElement *stuElement in studentElement.children) {
// NSLog(@"stuElement = %@", stuElement);
// 根据标签给student对象赋值
// stuElement.name相当于标签的名字
// stuElement.stringValue标签
// kvc
[stu setValue:stuElement.stringValue forKey:stuElement.name];
}
// 在子循环的时候添加到数组
[self.dataArray addObject:stu];
}
// 遍历检验
for (Student *stu in self.dataArray) {
NSLog(@"name = %@, sex = %@, age = %@, hobby = %@", stu.name, stu.sex, stu.age, stu.hobby);
}
标签:
原文地址:http://blog.csdn.net/sinat_34885883/article/details/51362415