想找教程的朋友请查阅死亡之书,学习基础教程之前请先看下PHP基本符号,帮助了解。本教程适合有一点语言常识的人看,无基础也可,学习PHP贵在坚持,重在实践,学到的东西要经常拿出来写,别人教的代码即使不懂什么意思也要写到面熟为止,有什么问题尽管留言给我,能帮忙解决的小弟第一时间处理,再一次感谢大家的光临!(注意:打开某些文章会有帐号密码输入框,大家直接点取消就好了,想要看图片的,我会尽快把图片连接修改掉的.)

PHP入门(进阶提升)之使用XML:DOM

上一篇 / 下一篇  2006-11-23 08:25:52 / 个人分类:PHP学习经验

什么是 XML第 1 页(共5 页)


现在,如果不以某种形式使用 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 有很多共同的地方。首先,它是由元素构成的,如HEADBODY;元素用标签标记,如<BODY>表示开始,</BODY>表示结束。这些元素可以包含其他的元素(如TITLE)或文本(如Workflow System)。元素还可以有属性,如align="center"

但是 XML 有一些不适用于 HTML 的限制。比方说,XML 必须是结构良好的,就是说每个起始标签(如<H1>)都必须有结束标签(如</H1>)。这意味着<P>标签必须有结束标签</P>。(或者可以写成元素的简写形式:<P />。)此外,XML 是大小写敏感的,因此必须用</P>而不是</p>来关闭<P>

这一节将创建记录用户上传文件相关信息的 XML 文件。


如何存储信息第 2 页(共5 页)


后面的两节中我们将使用 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?第 3 页(共5 页)


文档对象模型(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属性节点和多个文本节点:tatertimeone.jpg2020。元素节点之间的空白被看作是文本节点。

DOM 用父-子关系来安排节点。比如,approvedBy元素是fileInfo元素的孩子,tater文本是approvedBy元素的孩子。这种关系意味着fileInfo元素有11个子节点、5 个元素和 6 个空白文本节点。

有多种不同的 API 可处理 DOM 对象。PHP 的早期版本使用了一种类 DOM 的结构,但是这种结构实际上没有涵盖真正的 DOM 推荐标准(W3C 维护)中所有的方法和定义。因此,PHP V5 重新定义了一组 DOM 操作,更接近于标准。

我们将使用这种新的 API 创建和修改文档信息文件。

关于对象的简单说明第 4 页(共5 页)


本系列教程的第 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对象,可以像字符串或者数值那样用变量来引用它。然后使用->符号引用它的函数,和调用普通的函数一样。

现在关于对象了解这些就够了。

准备保存信息第 5 页(共5 页)


现在可以着手创建文档信息文件了。最终我们将创建一个函数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学习经验

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的存档

数据统计

  • 访问量: 4209
  • 日志数: 12
  • 建立时间: 2006-11-23
  • 更新时间: 2006-11-23

RSS订阅

Open Toolbar