XML 數據解析案例

#import "DomTool.h"

@implementation DomTool

+ (NSMutableArray *)startDomTool {
    // 先獲取文件路徑
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];
    // 把路徑下得文件變成NSData
    NSData *data = [NSData dataWithContentsOfFile:path];
    // 初始化數組
    NSMutableArray *stuArr = [NSMutableArray array];
    // 創建一個解析工具
    // 第一個參數: 文件內容, NSData
    // 第二個參數: 沒有用
    // 第三個參數: 錯誤信息
    NSError *error = nil;
    GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error];
    // 獲取根節點
    GDataXMLElement *rootElement = [document rootElement];
    // 它可以按照指定的節點名進行篩選, 不需要逐行進行遍歷
    NSArray *arr = [rootElement elementsForName:@"student"];
    // 對滿足條件的節點進行遍歷
    for (NSInteger i = 0; i < arr.count; i++) {
        // 找到下標對應的節點
        GDataXMLElement *stu = arr[i];

        // 創建一個學生
        Student *tempStu = [[Student alloc] init];
        [stuArr addObject:tempStu];
        [tempStu release];

        GDataXMLElement *name = [[stu elementsForName:@"name"] lastObject];
        NSString *stuName = [name stringValue];
        tempStu.name = stuName;

        GDataXMLElement *sex = [[stu elementsForName:@"sex"] lastObject];
        NSString *stuSex = [sex stringValue];
        tempStu.sex = stuSex;

        GDataXMLElement *age = [[stu elementsForName:@"age"] lastObject];
        NSString *stuAge = [age stringValue];
        tempStu.age = stuAge;

    }
    return stuArr;
}



- (void)startDom {
    // 先獲取文件路徑
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];
    // 把路徑下得文件變成NSData
    NSData *data = [NSData dataWithContentsOfFile:path];
    // 初始化數組
    self.stuArr = [NSMutableArray array];
    // 創建一個解析工具
    // 第一個參數: 文件內容, NSData
    // 第二個參數: 沒有用
    // 第三個參數: 錯誤信息
    NSError *error = nil;
    GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error];
    // 獲取根節點
    GDataXMLElement *rootElement = [document rootElement];
    // 它可以按照指定的節點名進行篩選, 不需要逐行進行遍歷
    NSArray *arr = [rootElement elementsForName:@"student"];
    // 對滿足條件的節點進行遍歷
    for (NSInteger i = 0; i < arr.count; i++) {
        // 找到下標對應的節點
        GDataXMLElement *stu = arr[i];

        // 創建一個學生
        Student *tempStu = [[Student alloc] init];
        [self.stuArr addObject:tempStu];
        [tempStu release];

        GDataXMLElement *name = [[stu elementsForName:@"name"] lastObject];
        NSString *stuName = [name stringValue];
        tempStu.name = stuName;

        GDataXMLElement *sex = [[stu elementsForName:@"sex"] lastObject];
        NSString *stuSex = [sex stringValue];
        tempStu.sex = stuSex;

        GDataXMLElement *age = [[stu elementsForName:@"age"] lastObject];
        NSString *stuAge = [age stringValue];
        tempStu.age = stuAge;

    }
}
@end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章