dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>PHP>php技术资料>文章内容
用PHP读取和编写XML DOM
来源:ibm     作者:    
  有许多技术可用于用 PHP 读取和编写 XML。本文提供了三种方法读取 :使用 DOM 库、使用 SAX 解析器和使用正则表达式。还介绍了使用 DOM 和 文本模板编写 。

  用 PHP 读取和编写可扩展标记语言(XML)看起来可能有点恐怖。实际上,XML 和它的所有相关技术可能是恐怖的,但是用 PHP 读取和编写 XML 不一定是项恐怖的任务。首先,需要学习一点关于 的知识 —— 它是什么,用它做什么。然后,需要学习如何用 读取和编写 ,而有许多种方式可以做这件事。

  本文提供了 的简短入门,然后解释如何用 读取和编写 。

  什么是 ?

  XML 是一种数据存储格式。它没有定义保存什么数据,也没有定义数据的格式。XML 只是定义了标记和这些标记的。格式良好的 标记看起来像这样:

<name>Jack Herrington</name>

  这个 <name> 标记包含一些文本:Jack Herrington。

  不包含文本的 标记看起来像这样:

<powerUp />

  用 对某件事进行编写的方式不止一种。例如,这个标记形成的输出与前一个标记相同:

<powerUp></powerUp>

  也可以向 标记添加属性。例如,这个 <name> 标记包含 first 和 last :

<name first="Jack" last="Herrington" />

  也可以用 对特殊字符进行编码。例如,& 符号可以像这样编码:

  &

  包含标记和的 文件如果像示例一样格式化,就是格式良好的,这意味着标记是对称的,字符的编码正确。清单 1 是一份格式良好的 的示例。

  清单 1. 图书列表示例

 

  <books> 

  <book> 

  <author>Jack Herrington</author> 

  <title> Hacks</title> 

  <publisher>O'Reilly</publisher> 

  </book> 

  <book> 

  <author>Jack Herrington</author> 

  <title>Podcasting Hacks</title> 

  <publisher>O'Reilly</publisher> 

  </book> 

  </books> 


  清单 1 中的 包含一个图书列表。父标记 <books> 包含一组 <book> 标记,每个 <book> 标记又包含 <author>、<title> 和 <publisher> 标记。

  当 XML 文档的标记结构和内容得到外部模式文件的验证后,XML 文档就是正确的。模式文件可以用不同的格式指定。对于本文来说,所需要的只是格式良好的 。

  如果觉得 XML 看起来很像超文本标记语言(HTML),那么就对了。XML 和 HTML 都是基于标记的语言,它们有许多相似之处。但是,要着重指出的是:虽然 XML 文档可能是格式良好的 HTML,但不是所有的 HTML 文档都是格式良好的 XML。换行标记(br)是 XML 和 HTML 之间区别的一个好例子。这个换行标记是格式良好的 HTML,但不是格式良好的 :

<p>This is a paragraph<br>
With a line break</p>

  这个换行标记是格式良好的 和 HTML:

<p>This is a paragraph<br />
With a line break</p>

  如果要把 HTML 编写成同样是格式良好的 XML,请遵循 W3C 委员会的可扩展超文本标记语言(XHTML)标准(参见 参考资料)。所有现代的浏览器都能呈现 XHTML。而且,还可以用 工具读取 XHTML 并找出文档中的数据,这比解析 HTML 容易得多。

  使用 DOM 库读取

  读取格式良好的 文件最容易的方式是使用编译成某些 安装的文档对象模型 (DOM)库。DOM 库把整个 文档读入内存,并用节点树表示它,如图 1 所示。

  图 1. 图书 XML 的 DOM 树
图书 XML 的 XML DOM 树

  树顶部的 books 节点有两个 book 子标记。在每本书中,有 author、publisher 和 title 几个节点。author、publisher 和 title 节点分别有包含文本的文本子节点。

  读取图书 文件并用 DOM 显示内容的代码如清单 2 所示。

  清单 2. 用 DOM 读取图书

 

  <? 

  $doc = new DOMDocument(); 

  $doc->load( 'books.' ); 

   

  $books = $doc->getElementsByTagName( "book" ); 

  foreach( $books as $book ) 

  { 

  $authors = $book->getElementsByTagName( "author" ); 

  $author = $authors->item(0)->nodeValue; 

   

  $publishers = $book->getElementsByTagName( "publisher" ); 

  $publisher = $publishers->item(0)->nodeValue; 

   

  $titles = $book->getElementsByTagName( "title" ); 

  $title = $titles->item(0)->nodeValue; 

   

  echo "$title - $author - $publisher\n"; 

  } 

  ?> 

  


  脚本首先创建一个 new DOMdocument 对象,用 load 方法把图书 装入这个对象。之后,脚本用 getElementsByName 方法得到指定名称下的所有元素的列表。

  在 book 节点的循环中,脚本用 getElementsByName 方法获得 author、publisher 和 title 标记的 nodeValue。nodeValue 是节点中的文本。脚本然后显示这些值。

  可以在命令行上像这样运行 脚本:

% php e1.
Hacks - Jack Herrington - O'Reilly
Podcasting Hacks - Jack Herrington - O'Reilly
%

  可以看到,每个图书块输出一行。这是一个良好的开始。但是,如果不能访问 DOM 库该怎么办?

[1]   

 

 

上一篇:PHP实现简单线性回归之数学库的重要性   下一篇:PHP实现简单线性回归之数据研究工具
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·通过对PHP服务器端特性的配置加
·php与mysql三日通
·AJAX技术在PHP开发中的简单应用
·大家所使用的PHP开发环境
·PHP缓存的实现
·针对PHP新手总结的PHP基础知识
·一个简单实现多条件查询的例子
·PHP串行化变量和序列化对象
·PHP表单
·推荐阅读:php技术生成静态页面
·php实用函数
·php生成随机数
  相关文章
·PHP实现简单线性回归之数学库的
·PHP实现简单线性回归之数据研究
·正确理解PHP程序编译时的错误信
·PHP开发中接收复选框信息的方法
·用PHP操纵Oracle的LOB类型的数据
·PHP开发中关于文件操作的疑难问
·PHP程序员的优化调试技术和技巧
·利用PHP和AJAX创建RSS聚合器
·PHP程序加速探索之加速工具软件
·PHP.MVC的模板标签系统之标签行
·让你的PHP引擎全速运转的三个绝
·PHP安全配置之实现安全的两个重
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763