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. nape.dynamics.InteractionGroup

    (转载http://tomyail.com/blog/1123) 说明: Filter只是Shape的属性,Nape为Interactor类提供了group属性,这个属性是一个InteractionG ...

  2. 解读BOM与COM

    概念: 1.BOM(Browser Object Model): 浏览器对象模型,从名字上就能知道它和浏览器关系密切. 浏览器的非常多行为是通过JavaScript控制的.比如打开新窗体.打开关闭标签 ...

  3. jquery html标签的链式语法

    <div id="ProductNet"> <table border='0' cellspacing='2' cellpadding='0' style='te ...

  4. iOS UIView 基本属性用法

    .创建UIView UIView * redView = [[UIView alloc] initWithFrame:CGRectMake(, , , )]; UIView * blueView = ...

  5. LeetCode144:Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary t ...

  6. eclipse启动不了报错java was started but returned exit code=13

    http://zhidao.baidu.com/question/1367307106041927459.html http://zhidao.baidu.com/question/570567914 ...

  7. eclipse安装android sdk后工具栏没有图标的设置

    如果没有出现这android图标,选择'Window>Customize Perspective...>Commands',并在'Available command groups'中勾选' ...

  8. Helpers\CSRF

    Helpers\CSRF CSRF Protection The CSRF helper is used to protect post request from cross site request ...

  9. truncate和 delete的区别:

    1.一个表要删除全部数据如何实现:①delete,②truncate EG:删除a表中的所有数据: CREATE TABLE `b` ( `id` int(11) NOT NULL AUTO_INCR ...

  10. Struts2的工作流程

    Struts2如何实现MVC Struts2的参数封装: Struts2的运行原理图: