XML 解析

首先要导入Gdata,添加库libxml2,在Header Search Paths里写入/usr/include/libxml2,GDataXMLDocument获取指针,GDataXMLElement获取根节点 xpath:用指针调用 nodesForXPath方法即可

//获取文件路径
    NSString* path = [[NSBundle mainBundle] pathForResource:@"xml" ofType:@"txt"];
    //获得文件内容
    NSString* xmlStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

    //<CityName>北京</CityName> 
    //name:CityName   value:北京
    //<Item key="1" value="A"></Item>
    //名称       值     属性     属性    .......
    //CityName  北京    
    //Item            key="1"  value="A"
    //属性名称  属性值
    // key      1
    //value     A
    
    /*
     <root>
         <systemConfig>
             <CityName>北京</CityName>
             <CityCode>201</CityCode>
             <ParentCityCode> 0</ParentCityCode>
             <areaCode>010</areaCode>
             <AgreementUrl></AgreementUrl>
             <IntentionLevel>                       
                 <Item key="1" value="A"></Item>
                 <Item key="2" value="B">BBB</Item>
                 <Item key="3" value="C"></Item>
     */
    
    //开始GData解析
    GDataXMLDocument* xmlDoc = [[GDataXMLDocument alloc] initWithXMLString:xmlStr options:0 error:nil];
    //XPath
    // /root/systemConfig/CityName
    
    GDataXMLElement* cityName = [[xmlDoc nodesForXPath:@"/root/systemConfig/CityName" error:nil] objectAtIndex:0];
    NSLog(@"%@",cityName.stringValue);
    
    /*
     //相对路径
     | 多路径
     [1] 拿出第一个
     [last()-1] 拿出倒数第二个
     [position() < 3] 拿出前两个元素
     [@key] 返回节点必定有属性叫key
     [@key=2] 拿出key==2的节点
     [@key>1] 拿出key>1的节点
    */
    //<Item key="1" value="A"/>
    //<Item key2="1" value2="A"/>
    //Item
    NSArray* array = [xmlDoc nodesForXPath:@"//IntentionLevel/Item[@value='B']" error:nil];
    for (GDataXMLElement* itemEle in array) {
        NSLog(@"%@",itemEle.stringValue);
        NSLog(@"%@",itemEle.XMLString);
        NSLog(@"%@",itemEle.name);
        
        for (GDataXMLElement *attEle in itemEle.attributes) {
            NSLog(@"---%@",attEle.XMLString);
            NSLog(@"----%@",attEle.name);
        }
    }
    

 输出日志:

2013-03-13 00:59:40.038 xmlDemo[1562:c07] 北京
2013-03-13 00:59:40.039 xmlDemo[1562:c07] BBB
2013-03-13 00:59:40.040 xmlDemo[1562:c07] <Item key="2" value="B">BBB</Item>
2013-03-13 00:59:40.040 xmlDemo[1562:c07] Item
2013-03-13 00:59:40.041 xmlDemo[1562:c07] ---key="2"
2013-03-13 00:59:40.041 xmlDemo[1562:c07] ----key
2013-03-13 00:59:40.041 xmlDemo[1562:c07] ---value="B"
2013-03-13 00:59:40.042 xmlDemo[1562:c07] ----value

 

posted @ 2013-03-13 02:13  Jere-Jobs  阅读(309)  评论(0编辑  收藏  举报