zoukankan      html  css  js  c++  java
  • iOS dom解析xml格式数据

    问题描述:接口返回的是xml格式数据,而且节点名居然都是相同的,采用了dom解析最终解决

    一.文件导入

    1.下载GDataXMLNode.h 和 GDataXMLNode.m文件,导入工程(csdn文件下载链接:http://download.csdn.net/detail/wusangtongxue/9502292)

    2.配置环境:

    (1)改成ARC环境(-fno-objc-arc);

    (2)找到“PathsHeader Search Paths”项,并添加“/usr/include/libxml2”到列表中;

    (3)找到“LinkingOther Linker Flags”项,并添加“-lxml2”到列表中

    3.导入SBJson文件夹,用于将解析后的数据转换成字符串类型

    二.实际项目

    1.网页打印的xml格式数据

    2.导入#import "GDataXMLNode.h",解析

    -(void)xmlHttpRequest
    {
        NSString *str = 内网网址;
        NSURL *urll = [NSURL URLWithString:str];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urll cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
        // 2.
        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
            
                NSError *errror = nil;
                GDataXMLDocument *document = [[GDataXMLDocument alloc]initWithData:data options:0 error:&errror];
                //获取根节点
                GDataXMLElement *rootElement = [document rootElement];
                //获取所有子节点 装进一个数组
                NSArray *array = [rootElement elementsForName:@"string"];
                NSLog(@"打印数组:%@",array);
            NSString *string =[NSString stringWithFormat:@"%@",array[2]];
            NSRange startStr = [string rangeOfString:@"<string>"];
            NSRange end = [string rangeOfString:@"</string>"];
            NSString *sub = [string substringWithRange:NSMakeRange(startStr.location+8, end.location-startStr.location-9)];
            NSLog(@"打印截取后的字符串:%@",sub);
    
        }];
    
    }

    array:打印数组:(
        "GDataXMLElement 0x7ff26ad97f10: {type:1 name:string xml:"<string>610</string>"}",
        "GDataXMLElement 0x7ff26ad97cb0: {type:1 name:string xml:"<string/>"}",
        "GDataXMLElement 0x7ff26ad97ce0: {type:1 name:string xml:"<string>http://192.168.1.1:8080/</string>"}",
        "GDataXMLElement 0x7ff26adbb480: {type:1 name:string xml:"<string/>"}"
    )
    sub:打印截取后的字符串:http://192.168.1.1:8080
    这样就可以得到NSString数据了

    :网址是内网,需要根据自己的需要进行解析 这里的例子是本人项目的xml数据,有点特殊是节点名称都是相同的

    参考网址:http://www.cnblogs.com/pengyingh/articles/2342164.html

  • 相关阅读:
    可以支持jQuery1.10.1 的 fancybox 1.3.4, 並現在type為Ajax時,也可以定義窗口的大小。
    用tensorlayer导入Slim模型迁移学习
    用tensorflow迁移学习猫狗分类
    Serenity框架官方文档翻译3.2(多租户)
    Serenity框架官方文档翻译3.1(教程)
    Serenity框架官方文档翻译前言(什么是Serenity平台)
    Serenity框架官方文档翻译(1-2开始、安装和界面)
    GIN+GORILLA=A GOLANG WEBSOCKET SERVER
    【Advanced Windows Phone Programming】在windows phone 8中解码mp3 和编码pcm
    LIstView 滚动 异步 加载更多 mono for android ScrollStateChanged ScrollState.Idle; Fling;TouchScroll
  • 原文地址:https://www.cnblogs.com/wusang/p/5432587.html
Copyright © 2011-2022 走看看