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);
}
}
iOS中XML的相关知识的更多相关文章
- 2016 - 1- 23 iOS中xml解析 (!!!!!!!有坑要解决!!!!!!)
一: iOS中xml解析的几种方式简介 1.官方原生 NSXMLParser :SAX方式解析,使用起来比较简单 2.第三方框架 libxml2 :纯C 同时支持DOM与SAX GDataXML: D ...
- ios 中使用https的知识
先看文章,这篇文章说的是使用AFNetworing进行https时的事项,十分好!http://blog.cnbang.net/tech/2416/ ios中使用https,主要就是使用NSURLCr ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- Android中的Activity相关知识总结
一.什么是Activity? 简单理解:Activity是Android组件中最基本也是最为常见用的四大组件之一.是一个与用户交互的系统模块,一个Activity通常就是一个单独的屏幕(页面), 它上 ...
- [转]java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- iOS开发HTTP协议相关知识总结
HTTP原理 什么是URL URL中常见的几种协议 什么是HTTP协议 HTTP是做什么的 为什么要使用HTTP协议 HTPP协议的通信过程介绍 HTTP请求 HTTP响应 HTTP请求的选择 两种发 ...
- OpenLayers 3 中Layers的相关知识
昨天自己一遍又一遍的把API里Accessible map那个例子写下来,终于好像有熟悉一点点.找到一篇博文详细讲Layers的.整理一下贴出来(本来想在网上做笔记可以重新排版,比写在本子上要容易有结 ...
- iOS中“返回”操作相关
在程序中,总会设置“返回”按钮,但不可能在每一个控制器中都去设置一次“返回”按钮,那如何设置全局的“返回”按钮呢? 首先自定义一个导航控制器,在tabBarController中添加子控制器时,使用这 ...
- 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[ ...
随机推荐
- C#-设置label的字体颜色和大小
在进行label的设置的过程中,常常会遇到需要设定label的字体颜色和字体的大小,这就需要用到label的属性:
- 查看Linux主机CPU及内存信息
查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CPU ...
- android---APN切换
android手机客户端在上传文件时,有时候会一直失败,其可能的原因是APN的设置.wap下的成功率极低,所以在进行文件上传时最好设置下 apn为net形式.下面是我在网上找的一些代码,是由wap转n ...
- epoll讲解
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I ...
- 如何把 excel 设为文本格式?
选择要设置的单元格,右键选择 --- “设置单元格格式” --- 选 “ 分类 ” 下面的 “ 文本 ” --- 确定. 修改前: 修改后:
- Languages
Languages A language class exists inside the system/Core folder, this class have 2 methods: load - L ...
- Android(java)学习笔记137:Android中SimpleAdapter,ArrayAdapter和BaseAdapter常见的适配器
1.SimpleAdapter(BaseAdapter子类扩展类): simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片)等.可以显示比较复杂的列表, ...
- JAVA_java关联源码
java怎样关联源码?? 1,按住control键,点一下你要看源码的类,跳到如下界面: 2,单击,跳到下一个界面 3,继续,找到jdk按照路径,找到src.zip文件 4. 4. 点击OK就可以看源 ...
- Android_Dialog
layout.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...
- CentOS 简单命令
一.启动级别 Linux系统设置系统启动模式的方式可以修改(必须要以root身份登录才能修改).修改系统启动模式的配置文件是 /etc/inittab. 我们在切换到root用户后,然后 vi / ...