zoukankan      html  css  js  c++  java
  • iOS中XML的相关知识

      1.什么是XML

      “当 XML(扩展标记语言)于 1998 年 2 月被引入软件工业界时,它给整个行业带来了一场风暴。有史以来第一次,这个世界拥有了一种用来结构化文档和数据的通用且适应性强的格式,它不仅仅可以用于 WEB,而且可以被用于任何地方。”

    ---《Designing With Web Standards Second Edition》, Jeffrey Zeldman

     

      XML是作为一种数据格式,主要用于描述数据和存储数据

      

      2.一个常见的XML数据一般有以下部分组成

      文档声明

      元素节点(Element)

      属性(Attribute)

      

     

      3.XML解析

      XML解析:通过XML格式,提取XML描述的数据

      XML主要有两种解析方式:DOM和SAX

        DOM解析:读入整个XML文档并且构建一个驻留在内存的树结构(节点数),通过遍历数的结构可以检索任意XML节点,读取它的属性和值

        SAX解析:是一个基于通知的模式,一边读取XML文档一边处理,不必等整个文档加载完成后才采取操作,一边读取节点,一边处理数据

        DOM解析使用于小数据量的XML,SAX解析适用于大数据量的XML

      4.XML解析框架

      iOS SDK提供:NSXMLParser和libxml2两个类库

      第三方框架:TBXML、TouchXML、KissXML、TinyXML和GDataXML

      解析框架的对比

      

      5、我们该怎么选择

         读取小XML,支持XPath,建议使用TouchXML、KissXML、GDataXML

         读取、写入小XML,建议使用KissXML或者GDataXML

         读取大XML(需要性能),建议使用TBXM、libXML

        第三方框架NSXML(NSXMLParser)

     6、GDataXMLNode框架的使用

      Github下载地址https://github.com/wddonline/GDataXMLNode

      分为下列几项步骤

        1.导入libxml2.2.tbd

        2.在编译之前,找到Header Search Paths 输入/usr/include/libxml2

        3.先编译一下,查看是不是错误

      读取XML

      

      向XML中写入数据

      

     使用Xpath进行读写

      

    -(void)readXMLXpath{
        
        NSString *filePath  = [[NSBundle mainBundle]pathForResource:@"xml2" ofType:@"xml"];
        NSData *data = [NSData dataWithContentsOfFile:filePath];
        
        
        GDataXMLDocument *doc = [[GDataXMLDocument alloc]initWithData:data error:nil];
        
    
        NSString *Xpath = @"/catalog/cd/price";
        
        NSArray *array = [doc nodesForXPath:Xpath error:nil];
        
        
        for (GDataXMLElement *string in array) {
            NSLog(@"节点名%@    节点值%@ ",string.name,string.stringValue);
        }
    }
    

      

  • 相关阅读:
    欢迎使用CSDN-markdown编辑器
    欢迎使用CSDN-markdown编辑器
    Math类简介
    Math类简介
    http_server
    tcp服务器
    swoole安装
    laravel源码解析
    VMware的Unity模式
    string.format() %d越界的问题
  • 原文地址:https://www.cnblogs.com/Moshimol/p/5693090.html
Copyright © 2011-2022 走看看