想找教程的朋友请查阅死亡之书,学习基础教程之前请先看下PHP基本符号,帮助了解。本教程适合有一点语言常识的人看,无基础也可,学习PHP贵在坚持,重在实践,学到的东西要经常拿出来写,别人教的代码即使不懂什么意思也要写到面熟为止,有什么问题尽管留言给我,能帮忙解决的小弟第一时间处理,再一次感谢大家的光临!(注意:打开某些文章会有帐号密码输入框,大家直接点取消就好了,想要看图片的,我会尽快把图片连接修改掉的.)
PHP入门(进阶提升)之使用XML:DOM
上一篇 /
下一篇 2006-11-23 08:25:52
/ 个人分类:PHP学习经验
现在,如果不以某种形式使用 XML 就很难做多少编程工作了。所幸的是 XML 理解并不难。事实上,您可能已经处理过与 XML 相关的东西:HTML。比如下面的 HTML V4.01 页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Workflow System</TITLE>
</HEAD>
<BODY>
<H1 align="center">Welcome to the Workflow System!</H1>
We're glad you could make it.
<P>
Don't forget to log in!
</BODY>
</HTML>
这个页面和 XML 有很多共同的地方。首先,它是由元素构成的,如HEAD或BODY;元素用标签标记,如<BODY>表示开始,</BODY>表示结束。这些元素可以包含其他的元素(如TITLE)或文本(如Workflow System)。元素还可以有属性,如align="center"。
但是 XML 有一些不适用于 HTML 的限制。比方说,XML 必须是结构良好的,就是说每个起始标签(如<H1>)都必须有结束标签(如</H1>)。这意味着<P>标签必须有结束标签</P>。(或者可以写成空元素的简写形式:<P />。)此外,XML 是大小写敏感的,因此必须用</P>而不是</p>来关闭<P>。
这一节将创建记录用户上传文件相关信息的 XML 文件。
后面的两节中我们将使用 XML 文件列出用户上传的文档的信息。文件中包含每个文档、文档的状态、上传者以及关于文档本身的信息。文件还包括关于整个系统的统计信息。
文件看起来像下面这样:
<?xml version="1.0"?>
<workflow>
<statistics total="2" approved="1"/>
<fileInfo status="approved" submittedBy="roadnick2">
<approvedBy>tater</approvedBy>
<fileName>timeone.jpg</fileName>
<location>/var/www/hidden/</location>
<fileType>image/jpeg</fileType>
<size>2020</size>
</fileInfo>
<fileInfo status="pending" submittedBy="roadnick">
<approvedBy/>
<fileName>timeone.jpg</fileName>
<location>/var/www/hidden/</location>
<fileType>image/jpeg</fileType>
<size>2020</size>
</fileInfo>
</workflow>
为了更加清晰,这里增加了空白,但文件的整体结构就是如此。每个文档都有自己的fileInfo元素,包括关于状态和所有者的属性,包含关于文件自身的信息。统计文档还列出关于系统自身的信息。
我们将使用文档对象模型(DOM)操纵这些信息。
文档对象模型(DOM)是将 XML 数据表示成层次化的信息树的一种方式。比如下面的fileInfo元素:
<fileInfo status="approved" submittedBy="roadnick2">
<approvedBy>tater</approvedBy>
<fileName>timeone.jpg</fileName>
<location>/var/www/hidden/</location>
<fileType>image/jpeg</fileType>
<size>2020</size>
</fileInfo>
XML 文档中的每片信息都用一种类型的节点表示。比如,这里就包含fileInfo元素节点、status属性节点和多个文本节点:tater、timeone.jpg、2020。元素节点之间的空白被看作是文本节点。
DOM 用父-子关系来安排节点。比如,approvedBy元素是fileInfo元素的孩子,tater文本是approvedBy元素的孩子。这种关系意味着fileInfo元素有11个子节点、5 个元素和 6 个空白文本节点。
有多种不同的 API 可处理 DOM 对象。PHP 的早期版本使用了一种类 DOM 的结构,但是这种结构实际上没有涵盖真正的 DOM 推荐标准(W3C 维护)中所有的方法和定义。因此,PHP V5 重新定义了一组 DOM 操作,更接近于标准。
我们将使用这种新的 API 创建和修改文档信息文件。
本系列教程的第 3 部分将更详细的讨论对象和 PHP 中的面向对象编程,但是 DOM API 和下一节要讨论的 SAX API 都要用到这些概念,因此在深入讨论之前,对什么是对象和对象的工作原理至少要有基本的了解。
可以将对象想象成函数的集合,比方说可以创建下面这样的类,或者对象模板:
class Greeting{
function getGreeting(){
return "Hello!";
};
function getPersonalGreeting($name){
return "Hello, ".$name."!";
};
}
对象创建之后就可以引用它的函数,比如:
$myObject = new Greeting();
$start = $myObject->getPersonalGreeting("Nick");
该例中创建了一个myObject对象,可以像字符串或者数值那样用变量来引用它。然后使用->符号引用它的函数,和调用普通的函数一样。
现在关于对象了解这些就够了。
现在可以着手创建文档信息文件了。最终我们将创建一个函数save_document_info(),因此首先把该函数的调用添加到 uploadfile_action.php 中:
if(!is_uploaded_file($tmpName) ||
!move_uploaded_file($tmpName, $newName)){
echo "FAILED TO UPLOAD " . $_FILES['ufile']['name'] .
"<br>Temporary Name: $tmpName <br>";
} else {
save_document_info($_FILES['ufile']);
}
...
因为只需要传递已经上传的文件信息,因此对于save_document_info()而言,只传递关于 ufile 文件的信息,而不是整个$_FILES数组,这样就使事情变得更容易。
现在来创建函数。
导入论坛
收藏
分享给好友
管理
举报
TAG:
PHP
XML
DOM
PHP学习经验