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);
}
}

  

iOS中XML的相关知识的更多相关文章

  1. 2016 - 1- 23 iOS中xml解析 (!!!!!!!有坑要解决!!!!!!)

    一: iOS中xml解析的几种方式简介 1.官方原生 NSXMLParser :SAX方式解析,使用起来比较简单 2.第三方框架 libxml2 :纯C 同时支持DOM与SAX GDataXML: D ...

  2. ios 中使用https的知识

    先看文章,这篇文章说的是使用AFNetworing进行https时的事项,十分好!http://blog.cnbang.net/tech/2416/ ios中使用https,主要就是使用NSURLCr ...

  3. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  4. Android中的Activity相关知识总结

    一.什么是Activity? 简单理解:Activity是Android组件中最基本也是最为常见用的四大组件之一.是一个与用户交互的系统模块,一个Activity通常就是一个单独的屏幕(页面), 它上 ...

  5. [转]java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  6. iOS开发HTTP协议相关知识总结

    HTTP原理 什么是URL URL中常见的几种协议 什么是HTTP协议 HTTP是做什么的 为什么要使用HTTP协议 HTPP协议的通信过程介绍 HTTP请求 HTTP响应 HTTP请求的选择 两种发 ...

  7. OpenLayers 3 中Layers的相关知识

    昨天自己一遍又一遍的把API里Accessible map那个例子写下来,终于好像有熟悉一点点.找到一篇博文详细讲Layers的.整理一下贴出来(本来想在网上做笔记可以重新排版,比写在本子上要容易有结 ...

  8. iOS中“返回”操作相关

    在程序中,总会设置“返回”按钮,但不可能在每一个控制器中都去设置一次“返回”按钮,那如何设置全局的“返回”按钮呢? 首先自定义一个导航控制器,在tabBarController中添加子控制器时,使用这 ...

  9. java中数组的相关知识

      1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...

随机推荐

  1. 【23】宁以non-member、non-friend替换member函数

    1.non-member方法与member方法没有本质区别,对于编译器来说,都是non-member方法,因为member方法绑定的对象,会被编译器转化为non-member方法的第一个形参.non- ...

  2. Centos6 源代码部署MySQL5.6

    mysql从5.5版本号開始,不再使用./configure编译,而是使用cmake编译器,详细的cmake编译參数能够參考mysql官网文档(※ 很重要) http://dev.mysql.com/ ...

  3. [AngularJS] Introduction to angular-formly

    <!DOCTYPE html> <html> <head> <!-- Each of these scripts are the latest version ...

  4. 《Maven_孔浩》Maven命令

    maven命令: mvn compile:maven编译 mvn test:测试 mvn clean:删除编译生成的target文件 mvn package:运行编译.测试.package,把项目打包 ...

  5. 文件I/O(不带缓冲)之I/O的效率

    程序清单3-3中的程序使用read和write函数复制文件.关于该程序应注意下列各点: 它从标准输入读,写至标准输出,这就假定在执行本程序之前,这些标准输入.输出已由shell安排好.确实,所有常用的 ...

  6. Folder and jar

  7. Porsche Piwis Tester II “No VCI has been detected”,how to do?

    Hi,Joy, I am sorry that my Porsche Piwis Tester II from your shop said “No VCI has been detected” wh ...

  8. 一段JavaScript代码

    eval(function(p, a, c, k, e, d) { e = function(c) { return c.toString(36) }; if (!''.replace(/^/, St ...

  9. String 、InputStream、Reader 的转换

    1.String –> InputStream InputStrem is = new ByteArrayInputStream(str.getBytes());orByteArrayInput ...

  10. fstat - 读取文件相关信息

    #fstat读取到的信息 ["dev"]=> int(16777220) ["ino"]=> int(66880002) ["mode&q ...