# PHP XML DOM
**内建的 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 DOM 的知识,请访问我们的 [XML DOM 教程](/xmldom/index.asp "XML DOM 教程")。
## 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 解析器把它们当作普通的元素,如果您不注意它们,有时会产生问题。
如果您希望学习更多有关 XML DOM 的知识,请访问我们的 [XML DOM 教程](/xmldom/index.asp "XML DOM 教程")。
- PHP 基础
- PHP 简介
- PHP 安装
- PHP 语法
- PHP 变量
- PHP 5 echo 和 print 语句
- PHP 数据类型
- PHP 字符串函数
- PHP 常量
- PHP 运算符
- PHP if...else...elseif 语句
- PHP Switch 语句
- PHP while 循环
- PHP for 循环
- PHP 函数
- PHP 数组
- PHP 数组排序
- PHP 全局变量 - 超全局变量
- PHP 魔术变量
- PHP 命名空间(namespace)
- PHP 表单
- PHP 表单处理
- PHP 表单验证
- PHP 表单验证 - 必填字段
- PHP 表单验证 - 验证 E-mail 和 URL
- PHP 表单验证 - 完成表单实例
- PHP $_GET 变量
- PHP $_POST 变量
- PHP 高级
- PHP 多维数组
- PHP 日期和时间
- PHP Include 文件
- PHP 文件处理
- PHP 文件打开/读取/读取
- PHP 文件创建/写入
- PHP 文件上传
- PHP Cookies
- PHP Sessions
- PHP 发送电子邮件
- PHP 安全的电子邮件
- PHP 错误处理
- PHP 异常处理
- PHP 过滤器(Filter)
- PHP JSON
- PHP 数据库
- PHP MySQL 简介
- PHP 连接 MySQL
- PHP MySQL 创建数据库
- PHP 创建 MySQL 表
- PHP MySQL 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- PHP MySQL 读取数据
- PHP MySQL Where 子句
- PHP MySQL Order By 关键词
- PHP MySQL Update
- PHP MySQL Delete
- PHP 数据库 ODBC
- PHP XML
- PHP XML Expat 解析器
- PHP XML DOM
- PHP SimpleXML
- PHP AJAX
- AJAX 简介
- AJAX XMLHttpRequest
- PHP 和 AJAX 请求
- PHP 和 AJAX XML 实例
- PHP 和 AJAX MySQL 数据库实例
- PHP 和 AJAX responseXML 实例
- PHP 和 AJAX Live Search
- PHP 和 AJAX RSS 阅读器
- PHP 和 AJAX 投票
- 免责声明