当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP XML DOM

PHP
php ignore_user_abort与register_shutdown_function 使用方法
PHP写MySQL数据 实现代码
phpmyadmin 访问被拒绝的真实原因
PHP 程序员也要学会使用“异常”
php MYSQL 数据备份类
PHP 类型转换函数intval
php 图像函数大举例(非原创)
PHP 输出缓存详解
PHP COOKIE设置为浏览器进程
ie6 动态缩略图不显示的原因
php 将bmp图片转为jpg等其他任意格式的图片
discuz7 phpMysql操作类
一个php Mysql类 可以参考学习熟悉下
php 分页函数multi() discuz
学习discuz php 引入文件的方法DISCUZ_ROOT
php fckeditor 调用的函数
mysql 性能的检查和优化方法
PHP 高级课程笔记 面向对象
PHP 多进程 解决难题
php 404错误页面实现代码

PHP XML DOM


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 181 ::
收藏到网摘: n/a

内建的 DOM 解析器使在 PHP 中处理 XML 文档成为可能。

什么是 DOM?

W3C DOM 提供了针对 HTML 和 XML 文档的标准对象集,以及用于访问和操作这些文档的标准接口。

W3C DOM 被分为不同的部分 (Core, XML 和 HTML) 和不同的级别 (DOM Level 1/2/3):

  • Core DOM - 为任何结构化文档定义标准的对象集
  • XML DOM - 为 XML 文档定义标准的对象集
  • HTML DOM - 为 HTML 文档定义标准的对象集

XML 解析

如需读取和更新 - 创建创建并处理 - 一个 XML 文档,您需要 XML 解析器。

有两种基本的 XML 解析器类型:

  • 基于树的解析器:这种解析器把 XML 文档转换为树型结构。它分析整篇文档,并提供了 API 来访问树种的元素,例如文档对象模型 (DOM)。
  • 基于事件的解析器:将 XML 文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。

DOM 解析器是基于树的解析器。

请看下面的 XML 文档片段:

<?xml version="1.0" encoding="ISO-8859-1"?>
<from>John</from>

XML DOM 把 XML 视为一个树形结构:

  • Level 1: XML 文档
  • Level 2: 根元素: <from>
  • Level 3: 文本元素: "John"

安装

DOM XML 解析器函数是 PHP 核心的组成部分。无需安装就可以使用这些函数。

XML 文件

将在我们的例子中使用下面的 XML 文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

加载和输出 XML

我们需要初始化 XML 解析器,加载 XML,并把它输出:

例子

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>

以上代码的输出:

George John Reminder Don't forget the meeting!

假如您在浏览器窗口中查看源代码,会看到下面这些 HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

上面的例子创建了一个 DOMDocument-Object,并把 "note.xml" 中的 XML 载入这个文档对象中。

saveXML() 函数把内部 XML 文档放入一个字符串,这样我们就可以输出它。

循环 XML

我们要初始化 XML 解析器,加载 XML,并循环 <note> 元素的所有元素:

例子

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item) { print $item->nodeName . " = " . $item->nodeValue . "<br />"; }
?>

以上代码的输出:

#text =
to = George
#text =
from = John
#text =
heading = Reminder
#text =
body = Don't forget the meeting!
#text = 

在上面的例子中,您看到了每个元素之间存在空的文本节点。

当 XML 生成时,它通常会在节点之间包含空白。XML DOM 解析器把它们当作普通的元素,如果您不注意它们,有时会产生问题。