PHP网页编程之PHP的XML形式详解
也得学会了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 恳求
以下是援用片断:
<?xml(尺度化愈来愈近了) version="1.0"?>
<methodCall>
<methodName>sqrt</methodName>
<params>
<param>
<value><double>36.0</double></value>
</param>
</params>
</methodCall>
上面是 php(做为如今的主流开辟言语) 剧本需求完成的任务:
1、反省办法名,假如不是 sqrt(它是该剧本晓得若何处置的唯一办法),则生成毛病呼应。
2、找到参数,假如参数不存在或参数类型毛病,则生成毛病呼应。
3、别的,盘算平方根。
4、在表单中前往了局,如清单 2 所示。
清单 2. xml(尺度化愈来愈近了)-RPC 呼应
以下是援用片断:
<?xml(尺度化愈来愈近了) version="1.0"?>
<methodResponse>
<params>
<param>
<value><double>6.0</double></value>
</param>
</params>
</methodResponse>
上面咱们慢慢睁开申明。
初始化解析器并载入文档
第一步是创立新的解析器对象。创立操作很复杂:
以下是援用片断:
$reader = new xml(尺度化愈来愈近了)Reader();
接着,需求为它供应一些用于解析的数据。关于 xml(尺度化愈来愈近了)-RPC,这是超文本传输协定(Hypertext Transfer Protocol,HTTP)恳求的原始主体。然后可以将该字符串传递到读取器的 xml(尺度化愈来愈近了)() 函数:
填充原始发送数据
以下是援用片断:
$request = $HTTP_RAW_POST_DATA;
$reader->xml(尺度化愈来愈近了)($request);
假如发明 $HTTP_RAW_POST_DATA 是空的,则将以下代码行添加到 php(做为如今的主流开辟言语).ini 文件:
以下是援用片断:
always_populate_raw_post_data = On
可以解析任何字符串,不管它是从何处获得的。例如,可所以法式中的一串文字或从当地文件读取。还可使用 open() 函数从内部 URL 载入数据。例如,上面的语句筹办解析个中一个 Atom 提纲:
以下是援用片断:
$reader->xml(尺度化愈来愈近了)('http://www.cafeaulait.org/today.atom');
不管是从何处获得原始数据,如今已创立了浏览器并为解析做好筹办。
读取文档
read() 函数使解析器行进到下一个标志。最复杂的办法是在 while 轮回中遍历全部文档:
以下是援用片断:
while ($reader->read()) {
// processing code goes here...
}
完成遍历后,封闭解析器以释放它所持有的任何资本,而且重置解析器以便用于下一个文档:
以下是援用片断:
$reader->close();
在轮回外部,将解析器放置在特别节点上:元素的出发点、元素的起点、文本节点、正文等等。经由过程反省以上司性,可以发明解析器正在检查的内容:
localName 是当地的、未带前缀的节点名。
name 是能够的节点前缀名。关于像正文这类没着名称的节点,包含 #comment、#text、#document 等等,与 DOM 中的一样。
namespaceURI 是节点称号空间的一致资本标识符(Uniform Resource Identifier,URI)。
nodeType 是代表节点类型的整数 ―― 例如,2 代表属性节点,7 代表处置指令。
prefix 是节点的称号空间前缀。
value 是节点的下一个文本内容。
假如节点有文本值,hasValue 值为 true;不然,值为 false.
应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^ 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 基础有没有对学习php没有太大区别,关键是兴趣。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。 基础有没有对学习php没有太大区别,关键是兴趣。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。 没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。 当然这种网站的会员费就几十块钱。 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 当然这种网站的会员费就几十块钱。 环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
页:
[1]