1. XML 基本概念

   扩充标记语言 (Extensible Markup
Language, XML)
,用于标记电子公文使其拥有结构性的符号语言,能够用来标记数据、定义数据类型,是一种允许用户对团结的标记语言举办定义的源语言。格式统一,跨平台和语言,早已成为产业界公认的标准。

   *xml数据(文书档案)自上而下的树形结构

     *<root>…..</root>(多少个完好的节点),root节点的称号(标题)
中间的(….)为节点的剧情

     *各样xml文书档案唯有1个根节点(树形结构中最外层的节点)

     *xml文书档案(数据)由多少个节点组成(根节点->子节点->子节点….)

  1. 与JSON的比较

    JSON(JavaScript Object
Notation)一种轻量级的数据调换格式,具有卓绝的可读和方便急速编写的特色。可在差异平奥兰多间开始展览数据沟通。

    A. XML 格式统一,符合标准,可读性强;JSON
格式简单,一般都以裁减的,可读性差些。

    B. XML 文件庞大,占用带宽多;JSON 因是减掉的格式,带宽少;

    C. XML解析须求花较多的资源和岁月;JSON 易于解析。

 

眼前多数的施用中运用JSON传输数据较多。

  1. XML 解析

 解析 XML 平日有两种格局,DOM 和
SAX:

  • DOM解析XML时,读入整个XML文档并营造三个滞留内存的树结构(节点树),通过遍历树结构能够搜寻任意XML节点,读取它的品质和值。而且平时情形下,能够借助XPath,直接查询XML节点。
  • SAX解析XML,是基于事件通报的形式,一边读取XML文书档案一边处理,不必等成套文书档案加载完之后才使用操作,当在读取解析进度中蒙受供给处理的对象,会生出布告对其展开处理。

——————————————————————————————————————

XPath即为XML路径语言,它是一种用来分明xml文档中某部分职位的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的力量。

节点(Node)

在 XPath 中,有七连串型的节点:成分、属性、文本、命名空间、处理指令、注释以及文书档案(根)节点。XML
文书档案是被看作节点树来对待的。树的根被叫做文书档案节点照旧根节点。

请看下边这些 XML 文书档案:

 

<?xml version=”1.0″ encoding=”ISO-8859-1″?>

<bookstore>

    <book>

        <title lang=”普通话”>ios开发指南r</title>

        <author>北京</author>

        <year>2012</year>

        <price>88.88</price>

    </book>

    <book>

        <title lang=”普通话”>ios开发指南r</title>

        <titlelang>中文</titlelang>

        <author>北京</author>

        <year>2012</year>

        <price>88.88</price>

    </book>

</bookstore>

<otherroot>……那里相对不可能有首个根节点</otherroot>

 

地点的XML文书档案中的节点例子:

 

<bookstore> (文书档案节点,也叫根节点)

<author>香港</author> (成分节点)

lang=”en” (属性节点)

 

基本值(或称原子值,Atomic value)

 

基本值是无父或无子的节点。

 

基本值的事例:

北京

“中文”

 

项目(Item)

 

类型是基本值也许节点。

 

节点关系

父(Parent)

各类元素以及品质都有3个父。

在下边的例证中,book 成分是 title、author、year 以及 price 成分的父:

 <book>

     <title lang=”汉语”>ios开发指南r</title>

     <author>北京</author>

     <year>2012</year>

     <price>88.88</price>

 </book>

子(Children)

要上秋点可有零个、一个或多少个子。

在上边包车型大巴例证中,title、author、year 以及 price 成分皆以 book 成分的子:

 <book>

     <title lang=”粤语”>ios开发指南r</title>

     <author>北京</author>

     <year>2012</year>

     <price>88.88</price>

 </book>

同胞/兄弟(Sibling)

不无一致的父的节点

在底下的例子中,title、author、year 以及 price 成分都以同胞:

 <book>

     <title lang=”汉语”>ios开发指南r</title>

     <author>北京</author>

     <year>2012</year>

     <price>88.88</price>

 </book>

先辈(Ancestor)

某节点的父、父的父,等等。

在底下的事例中,title 元素的长辈是 book 成分和 bookstore 成分:

 <bookstore>

     <book>

         <title lang=”中文”>ios开发指南r</title>

         <author>北京</author>

         <year>2012</year>

         <price>88.88</price>

     </book>

 </bookstore>

后代(Descendant)

某些节点的子,子的子,等等。

在底下的例证中,bookstore 的儿孙是 book、title、author、year 以及 price
成分:

 <bookstore>

 <book>

 <title lang=”汉语”>ios开发指南r</title>

 <author>千锋3G</author>

 <year>2012</year>

 <price>88.88</price>

 </book>

 </bookstore>

 

*/

 

//xPath语法

 

/*

 XML 实例文书档案

 大家将在底下的例子中应用那个 XML 文书档案。

 <?xml version=”1.0″ encoding=”ISO-8859-1″?>

 <bookstore>

     <book>

        <title lang=”eng”>Harry Potter</title>

        <price>29.99</price>

     </book>

 

     <book>

        <title lang=”eng”>Learning XML</title>

        <price>39.95</price>

     </book>

     <title lang=”eng”>Learning XML</title>

 </bookstore>

 

 选用节点

 XPath 使用路径表达式在 XML 文书档案中选用节点。节点是透过沿着路径恐怕 step
来摘取的。

 上面列出了最有效的门径说明式:

 表达式 描述

 nodename 选用此节点的全体子节点。

 / 从根节点选用。

 // 从匹配选拔的脚下节点选取文书档案中的节点,而不考虑它们的岗位。

 . 选择当前节点。

 .. 选拔当前节点的父节点。

 @ 采用属性。

 

 实例

 在上面包车型大巴表格中,我们已列出了一些门道表明式以及表明式的结果:

 路径表达式 结果

 

 bookstore 选用 bookstore 成分的全部子节点。

 

 /bookstore 选用根成分 bookstore。

 注释:尽管路径起头高尚斜杠( /
),则此路径始终代表到某成分的相对路径!

 

 bookstore/book 选取属于 bookstore 的子成分的享有 book 成分。

 

 //book 接纳全数 book 子成分,而不论它们在文书档案中的地方。

 

 bookstore//book 选取属于 bookstore 元素的后生的装有 book
成分,而不论是它们放在 bookstore 之下的什么样岗位。

 

 //@lang 选拔名为 lang 的保有属性。

 

 谓语(Predicates)

 谓语用来探寻有些特定的节点依然隐含有些钦定的值的节点。

 谓语被嵌在方括号中。

 

 实例

 在底下的报表中,大家列出了含有谓语的有的路线表明式,以及表达式的结果:

 路径表明式 结果

 /bookstore/book[1] 选择属于 bookstore 子成分的首先个 book 成分。

 

 /bookstore/book[last()] 采纳属于 bookstore 子成分的末梢一个 book
成分。

 

 /bookstore/book[last()-1] 选择属于 bookstore 子成分的尾数第三个 book
成分。

 

 /bookstore/book[position()<3] 选用最前头的多少个属于 bookstore
成分的子成分的 book 成分。

 

 //title[@lang] 选用全部拥盛名为 lang 的习性的 title 成分。

 

 //title[@lang=’eng’] 采纳全数 title 元素,且这几个要素拥有值为 eng 的
lang 属性。

 

 /bookstore/book[price>35.00] 选拔 bookstore 成分的持有 book
成分,且当中的 price 元素的值须大于 35.00。

 

 /bookstore/book[price>35.00]/title 选择 bookstore 成分中的 book
成分的装有 title 成分,且在那之中的 price 成分的值须大于 35.00。

 

 选择未知节点

 XPath 通配符可用来摘取未知的 XML 成分。

 通配符 描述

 * 匹配任何元新秋点。

 @* 匹配任何属性节点。

XML, node() 匹配任何项指标节点。

 

 实例

 在底下的表格中,我们列出了一些途径表明式,以及这几个表明式的结果:

 路径表明式 结果

 

 /bookstore/* 选拔 bookstore 成分的富有子成分。

 

 //* 接纳文书档案中的全数因素。

 

 //title[@*] 采用全部带有属性的 title 成分。

 //节点中的属性 不能够 有重名的

 采纳若干路径

 通过在路子表明式中接纳“|”运算符,您能够选择若干个途径。

 实例

 在底下的报表中,大家列出了一些门路表明式,以及这么些表达式的结果:

 路径表达式 结果

 

 //book/title | //book/price 选用 book 成分的保有 title 和 price 成分。

 

 //title | //price 选用文书档案中的全数 title 和 price 元素。

 

 /bookstore/book/title | //price 选拔属于 bookstore 成分的 book
成分的具备 title 成分,以及文书档案中拥有的 price 元素。

 */

—————————————————————————————————————

 

 

   -XML 解析库

   --iOS 自带的三种:

         NSXMLParser -Sax格局分析,需兑现其代理协议章程,较为简单。

         libxml2 底层库,可边读边解析,基于c,同时扶助DOM,SAX, 解析功用高。

   --常用第2方库:

         KissXML, GDataXML

相关文章

网站地图xml地图