xml 解析 json解析

对xml解析之前要进行步骤:

1.添加libxml2.dylib系统库。

2.添加第三方类库,这里使用的是Google的GDataXML。

3.配置第三方类库

首先配置Header search Paths 为如图所示:

然后配置other linker flags,如下图所示:

在要解析的地方导入 GDataXMLNode.h 文件后进行解析:

下面是以xml类型文件为例

NSString *xmlPath =[[NSBundle mainBundle] pathForResource:@"stu" ofType:@"xml"];
    NSString *xmlstr = [NSString stringWithContentsOfFile:xmlPath encoding:4 error:nil];
    
    //用字符串初始化xml
    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithXMLString:xmlstr options:0 error:nil];

//获取根节点
    GDataXMLElement *root = doc.rootElement;
    NSLog(@"%@",root);

//获取名字为student 的子节点
    NSArray *studentArr = [root elementsForName:@"student"];
    NSLog(@"%@",studentArr);

//快速遍历子节点
    for (GDataXMLElement *e in studentArr) {
        NSArray *stuArr = e.children;
        NSLog(@"%d",e.childCount);

      //获取子节点的元素
        for (GDataXMLElement *child in stuArr) {
            NSLog(@"%@",child.stringValue);
        }
    }

此方法是在内存中建立树的方法来解析的,所以耗内存,但效率高。系统的是低消耗,低效率。

 

json 解析:

json 解析方法多种多样 ,这里使用的是SBJSON。因为它够方便,够傻瓜式。

json的规则:

规则: 大括号代表字典,中括号(或者小括号)代表数组。冒号两边分别为键和值。数据与数据之间用逗号分隔。
[{"name":"kallen","age":"26","sex":"男"},{"name":"lily","age":"20","sex":"女"}]

在项目中加入SBJSON第三方类库,导入JSON.h

解析过程:

//先获取JSON数据

NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"json"];
    NSString *jsonStr = [NSString stringWithContentsOfFile:jsonPath encoding:4 error:nil];

//JSON数据进行解析
    NSArray *stuArr = [jsonStr JSONValue];
    NSLog(@"%@",stuArr);
    for (NSDictionary *dic in stuArr) {
        NSLog(@"%@ , %@ , %@",[dic valueForKey:@"age"],[dic valueForKey:@"name"],[dic valueForKey:@"sex"]);
    }

Json数据是比XML更轻量级的数据。

 

posted @ 2013-05-09 17:38  LiMario  阅读(338)  评论(0)    收藏  举报