• XML解析




     【认识XML】
         扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。格式统一,跨平台和语言,早已成为业界公认的标准。

     【XML语法】
      【1、基本术语】
        标签/节点:
            格式:<节点名> 节点值 </节点名>
                    如:    <root>books</root>   
                                其中root为节点名,books为节点值

              根节点:最外层的节点称为根节点

              子节点:节点中包含的其它节点都称为该节点的子节点,
                                一级子节点也称为直接子节点。
              属性节点:
                    如:<Item key="1" value="报纸"> </Item>
                                 其中 key="1" 为属性节点
                                属性: key="1"
                                属性名:    key  
                                属性值:    "1"
                            
      【2、xpath语法】
                XPath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语    
        言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
                XPath使用路径表达式来选取 XML文档中的节点或者节点集。这些路径    
        表达式和我们在常规的电脑文件系统中看到的表达式非常相似。路径表达式是
        从一个XML节点到另一个节点、或一组节点的书面步骤顺序。

     【XML解析】
        1、系统类NSXMLParser比较繁琐
        2、第三方开源库GData常用        

            (1)导入GData库

                ————add file to   ”xml网络解析”
                底层使用系统的libxml2库, 使用的时候添加libxml2

            (2)添加libxml二进制库
                Build Phases ---> Link Binary
                添加     libxml2.dylib

            (3)设置头文件搜索路径  
                Build Setting--->header  search Path
                添加   /usr/include/libxml2

            (4)如果是arc的工程
                Build Phases ---> Compile Source File
                    GDataXmlNode.m(非arc的)
                    填写编译选项:-fno-objc-arc

    GData 第三方库 有两种方式解析
    1、获取根节点所有元素,遍历所有的子节点
    2、使用xpath语法
        
    http://10.0.8.8/sns/my/user_list.php?format=xml&page=1&number=100

    练习:
    解析XML文件【qfSNSXml.txt】要求:封装JYUser类,用于存储数据模型

    GDataXMLNode : NSObject
    获取当前节点的值
    - (NSString *)stringValue;
    //获取当前节点子节点的个数
    - (NSUInteger)childCount;
    //获取子节点数组
    - (NSArray *)children;
    //根据索引获取子节点
    - (GDataXMLNode *)childAtIndex:(unsigned)index;

    GDataXMLElement : GDataXMLNode
    //根据节点名字获取所有的节点名为name的节点数组
    - (NSArray *)elementsForName:(NSString *)name;
    //获取节点的属性
    - (NSArray *)attributes;
    //根据属性名获取属性节点
    - (GDataXMLNode *)attributeForName:(NSString *)name;

    GDataXMLDocument : NSObject
    //创建文档树
    - (id)initWithData:(NSData *)data options:(unsigned int)mask error:(NSError **)error;
    //获取跟节点
    - (GDataXMLElement *)rootElement;
    //根据xpath 语法 获取 指定的节点数组
    - (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error;

  • 相关阅读:
    CSS常见兼容性问题
    Ubuntu系统下创建python数据挖掘虚拟环境
    Django 模板中引用静态资源(js,css等)
    Django auth 登陆后页面跳转至/account/profile,修改跳转至其他页面
    Ubuntu14.04安装配置SVN及Trac
    禁止Chrome浏览器缓存的方法
    windows下安装配置Xampp
    Linux系统下用C语言获取MAC地址
    使用axios+formdata+vue上传图片遇到后台接受不到图片的值的问题
    使用vee-validate表单插件是如何设置中文提示?
  • 原文地址:https://www.cnblogs.com/rainwz/p/4589119.html
Copyright © 2020-2023  润新知