仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2573|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP的XML形式详解

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:27:42 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
也得学会了PHP。然后再学,见异思迁是最不可取的,狗熊掰玉米就是这个道理,如果经常中途放弃,只能是一无所获,还浪费了N多的时间和经历,得不偿失,最重要的是,你会被别人瞧不起。     研讨与 php(做为如今的主流开辟言语) 5 绑缚在一同的 xml(尺度化愈来愈近了)Reader 库,它使 php(做为如今的主流开辟言语) 页面可以以高效的流形式来处置 xml(尺度化愈来愈近了) 文档。
  php(做为如今的主流开辟言语) 5 引入了新的类 xml(尺度化愈来愈近了)Reader,用于读取可扩大标志言语(Extensible Markup Language,xml(尺度化愈来愈近了))。与 Simplexml(尺度化愈来愈近了) 或文档对象模子(Document Object Model,DOM)分歧,xml(尺度化愈来愈近了)Reader 以流形式停止操作。即它从头至尾读取文档。在文档前面的内容编译完成之前,可以先处置已编译好的文档后面的内容,从而完成十分疾速、十分高效、十分节俭地利用内存。需求处置的文档越大,这个特色就更加主要。
  libxml(尺度化愈来愈近了)
  这里所说的 xml(尺度化愈来愈近了)Reader API 位于 Gnome Project 顶用于 C 和 C++ 的 libxml(尺度化愈来愈近了) 库之上。实践上 xml(尺度化愈来愈近了)Reader 只是在 libxml(尺度化愈来愈近了) 的 xml(尺度化愈来愈近了)TextReader API 之上的很薄的 php(做为如今的主流开辟言语) 层。xml(尺度化愈来愈近了)TextReader 自己是仿照 .NET 的 xml(尺度化愈来愈近了)TextReader 类和 xml(尺度化愈来愈近了)Reader 类,虽然其实不具有与这些类类似的代码。
  与 Simple API for xml(尺度化愈来愈近了) (SAX) 分歧,xml(尺度化愈来愈近了)Reader 是推解析器,而不是拉解析器。这意味着法式是可以掌握的。您将告知解析器什么时候获得下一个文档片断,而不是在解析器看到文档后告知您所看到的内容。您将恳求内容,而不是对内容停止反响。从另外一个角度来思索这个成绩:xml(尺度化愈来愈近了)Reader 是 Iterator 设计形式的完成,而不是 Observer 设计形式的完成。
  示例成绩
  先从复杂例子入手下手会商。假定正在编写 php(做为如今的主流开辟言语) 剧本,用来吸收 xml(尺度化愈来愈近了)-RPC 恳求并生成呼应。更详细一些,假定恳求如清单 1 所示。文档的根元素是 methodCall,它包括 methodName 元素和 params 元素。办法的称号是 sqrt.params 元素包括一个 param 元素,param 元素包括 double,double 的平方根是但愿失掉的值。没有利用称号空间。
  清单 1. xml(尺度化愈来愈近了)-RPC 恳求
  1. [b]以下是援用片断:
  2. [/b]<?xml(尺度化愈来愈近了) version="1.0"?>
  3. <methodCall>
  4.   <methodName>sqrt</methodName>
  5.   <params>
  6.     <param>
  7.       <value><double>36.0</double></value>
  8.     </param>
  9.   </params>
  10. </methodCall>
复制代码

  上面是 php(做为如今的主流开辟言语) 剧本需求完成的任务:
  1、反省办法名,假如不是 sqrt(它是该剧本晓得若何处置的唯一办法),则生成毛病呼应。
  2、找到参数,假如参数不存在或参数类型毛病,则生成毛病呼应。
  3、别的,盘算平方根。
  4、在表单中前往了局,如清单 2 所示。
  清单 2. xml(尺度化愈来愈近了)-RPC 呼应
  1. [b]以下是援用片断:
  2. [/b]<?xml(尺度化愈来愈近了) version="1.0"?>
  3. <methodResponse>
  4.   <params>
  5.     <param>
  6.       <value><double>6.0</double></value>
  7.     </param>
  8.   </params>
  9. </methodResponse>
复制代码

  上面咱们慢慢睁开申明。
  初始化解析器并载入文档
  第一步是创立新的解析器对象。创立操作很复杂:
  1. [b]以下是援用片断:
  2. [/b]&#36;reader = new xml(尺度化愈来愈近了)Reader();
复制代码

  接着,需求为它供应一些用于解析的数据。关于 xml(尺度化愈来愈近了)-RPC,这是超文本传输协定(Hypertext Transfer Protocol,HTTP)恳求的原始主体。然后可以将该字符串传递到读取器的 xml(尺度化愈来愈近了)() 函数:
  填充原始发送数据
  1. [b]以下是援用片断:
  2. [/b]  &#36;request = &#36;HTTP_RAW_POST_DATA;
  3.   &#36;reader->xml(尺度化愈来愈近了)(&#36;request);
复制代码

  假如发明 &#36;HTTP_RAW_POST_DATA 是空的,则将以下代码行添加到 php(做为如今的主流开辟言语).ini 文件:
  1. [b]以下是援用片断:
  2. [/b]  always_populate_raw_post_data = On
复制代码

  可以解析任何字符串,不管它是从何处获得的。例如,可所以法式中的一串文字或从当地文件读取。还可使用 open() 函数从内部 URL 载入数据。例如,上面的语句筹办解析个中一个 Atom 提纲:
  1. [b]以下是援用片断:
  2. [/b]  &#36;reader->xml(尺度化愈来愈近了)('http://www.cafeaulait.org/today.atom');
复制代码

  不管是从何处获得原始数据,如今已创立了浏览器并为解析做好筹办。
  读取文档
  read() 函数使解析器行进到下一个标志。最复杂的办法是在 while 轮回中遍历全部文档:
  1. [b]以下是援用片断:
  2. [/b]  while (&#36;reader->read()) {
  3.   // processing code goes here...
  4.   }
复制代码

  完成遍历后,封闭解析器以释放它所持有的任何资本,而且重置解析器以便用于下一个文档:
  1. [b]以下是援用片断:
  2. [/b]  &#36;reader->close();
复制代码

  在轮回外部,将解析器放置在特别节点上:元素的出发点、元素的起点、文本节点、正文等等。经由过程反省以上司性,可以发明解析器正在检查的内容:
  localName 是当地的、未带前缀的节点名。
  name 是能够的节点前缀名。关于像正文这类没着名称的节点,包含 #comment、#text、#document 等等,与 DOM 中的一样。
  namespaceURI 是节点称号空间的一致资本标识符(Uniform Resource Identifier,URI)。
  nodeType 是代表节点类型的整数 ―― 例如,2 代表属性节点,7 代表处置指令。
  prefix 是节点的称号空间前缀。
  value 是节点的下一个文本内容。
  假如节点有文本值,hasValue 值为 true;不然,值为 false.

应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^
金色的骷髅 该用户已被删除
沙发
 楼主| 发表于 2015-5-3 15:54:53 | 显示全部楼层
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-10 23:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表