plist 文件实质上是一个xml文件,通常在iphone上看到后缀名为plist的都是这种文件,这种文件有两种形式,一种是明文的xml形式,还有一种是二进制形式的文件。plist 形式可以说无处不在,通过itunes 发送各种命令要用到,存储数据库要用到。先贴两个图大致看一下文件
明文xml形式:
二进制形式:
这两种形式通过ituens的导出函数可以相互转换,在调用itunes导出函数发送命令的时候这两种形式好像没有区别。要处理这个还是比较复杂。
先看明文xml 的结构,里面有两种比较复杂的类型,一种是dict,一种是array。dict 也就是key-value结构,array 就是数组了,这两种类型是可以嵌套的,也就是dict 里面可以有array或者dict,array里面也可以有dict或者array,所以要写一个类来解析这种类型的文件就要用到递归的方式来解析。如果有兴趣看下复杂的这个文件可以用其他助手备份以下自己的手机,在备份目录下有一个Info.Plist 文件,打开来看一下。另外解析这个文件不是用xml库来解析,而是要用到itunes的导出函数。这个不在本次讲解的范围了。
最开始节点是一个dict ,说明他的子节点是按照字典的方式排列的,也就是key-value的形式,key 永远都是一个字符串类型,value的话就需要根据名称来判断是什么类型。 从他的第一个子节点可以看出,value 是一个string 类型,值为10B329。
下面这个图也是一个字典类型,但是他的value 是一个array类型,array 的自己点只有值,没有像dict的那种key。从下面看出array 的子节点有3个字符串类型的值。
下面详细说一下他能处理的数据类型:
1) 数字类型
数字类型分了很多种,处理的最多的就是整形了。
<key>__int64</key>
<integer>3</integer>
<key>double</key>
<real>3.2000000000000002</real>
<key>int</key>
<integer>1</integer>
2) 字符串,这个就不解释了很简单
<key>GUID</key>
<string>FD47D135E9534895B9D3121F3DB05999</string>
3) bool 类型
<key>bool</key>
<true/>
4) 日期类型
这里的日期类型比较奇怪,在iphone的一些db里面可以查看到是一个double类型的,是距离2001 年1月1日0时0分0秒的秒数。 调用itunes 的转换函数可以转换成字符串类型。
<key>Last Backup Date</key>
<date>2013-10-28T14:26:03Z</date>
5)Array 数组类型,前面已经说过了
<key>DeletedApplications</key>
<array>
<string>com.popcap.ios.PvZ2</string>
<string>com.tongbu.tui</string>
<string>com.cmbchina.MPBBank</string>
</array>
6) 字典类型
<dict>
<key>Build Version</key>
<string>10B329</string>
<key>Device Name</key>
<string>“Administrator”的 iPod</string>
<key>Display Name</key>
<string>“Administrator”的 iPod</string>
</dict>
7) data 类型,这种就是二进制的数据了,比如要保存一个文件的内容,那就会用这种类型的。
<key>iTunesPrefs.plist</key>
<data>
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NU
WVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VO
IiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4w
</data>
先就到这里了,后面继续
转让Android,IOS 手机助手各种技术资料,文档,以及源码,有需要的可以联系我QQ: 2506314894