DOM解析XML文件

第一步:引入动态库:

1.libxml2.rbd

 

2.引入第三方文件:<GDataXMLNode.h/.m> 注:博客文件中已上传第三方文件(有需要可以查找下载)

2.1.根据Header Search Paths  添加 /usr/include/libxml2

2.2.根据Other Linker Flags 添加 -lxml2

2.3非ARC程序在ARC程序中运行需添加如下代码: -fno-objc-arc

 

#pragma mark - DOM解析XML文件
- (IBAction)domParserActionXMLDocument:(id)sender {
    
   // 第一步: 引入动态库
    
   // 1.获取文件的路径
    NSString *filePath =[[NSBundle mainBundle] pathForResource:@"StudentInfor_xml" ofType:@"txt"];
    
    // 2.根据路径获取data类型的数据
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    
    //NSLog(@"data = %@", data);
    // 2.5初始化存储数据的数组
    self.dataArray = [NSMutableArray array];

    // 3.设置DOM解析 (创建解析文档)
    GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
    // 4.获取分节点
    GDataXMLElement *rootElement = document.rootElement;
    
    // 5.遍历获取相对应的子节点
    for (GDataXMLElement *studentElement in rootElement.children) {
        Student *stu = [[Student alloc] init];
        // 遍历子节点的子节点
        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 = %@, gender = %@, age = %ld, hobby = %@", stu.name,stu.gender,stu.age,stu.hobby);
    }
    
}

 

posted @ 2016-05-14 15:20  雷坤  阅读(191)  评论(0编辑  收藏  举报