zoukankan      html  css  js  c++  java
  • 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
    长串英文数字强制折行解决办法css
    Poj 2352 Star
    树状数组(Binary Indexed Trees,二分索引树)
    二叉树的层次遍历
    Uva 107 The Cat in the Hat
    Uva 10336 Rank the Languages
    Uva 536 Tree Recovery
    Uva10701 Pre, in and post
  • 原文地址:https://www.cnblogs.com/rainwz/p/4589119.html
Copyright © 2011-2022 走看看