PHP XML 教程:创建、解析、读取附带示例
什么是 XML?
XML是可扩展标记语言的缩写。
XML 用于构建、存储和传输数据,以便在不同系统之间进行交换。
XML 与 HTML 相似。
它使用开始和结束标签。
与 HTML 不同,XML 允许用户定义自己的标签。
什么是 DOM?
DOM 是文档对象模型的缩写。
它是一个跨平台、语言无关的标准,定义了如何访问和操作数据:
- HTML
- XHTML
- XML
DOM XML 用于访问和操作 XML 文档。它将 XML 文档视为树形结构进行查看。
XML 解析器
XML 解析器是一种将 XML 文档转换为 XML 文档对象模型 (DOM) 对象的程序。
XML DOM 对象随后可以使用 JavaScript、Python 和 PHP 等语言进行操作。
CDATA 关键字(代表 (Unparsed) Character Data,即(未解析)字符数据)用于在解析 XML 文档时忽略特殊字符,例如“<”和“>”。
为什么使用 XML?
- SOAP 和 REST 等 Web 服务使用 XML 格式交换信息。学习 XML 是什么以及它是如何工作的,将使您在开发者中具有竞争优势,因为现代应用程序大量使用 Web 服务。
- XML 文档可用于存储应用程序的配置设置。
- 它允许您创建自己的自定义标签,使其更加灵活。
XML 文档示例
假设您正在开发一个应用程序,该应用程序以 XML 格式从 Web 服务获取数据。
下面是 XML 文档的示例。
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
此处,
- “<?xml version=”1.0″ encoding=”utf-8″?>” 指定要使用的 XML 版本和编码。
- “<employees status = “ok”>” 是根元素。
- “<record…>…</record>” 分别是 administration 和 sales 的子元素。
如何使用 PHP 读取 XML
现在让我们编写代码来读取 employees XML 文档并在 Web 浏览器中显示结果。 Index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
此处,
- “$xml = simplexml_load_file(’employees.xml’);” 使用 simplexml_load_file 函数加载文件名 employees.xml 并将内容分配给数组变量 $xml。
- “$list = $xml->record;” 获取 record 节点的内容。
- “for ($i = 0; $i < count(…)…” 是用于读取数值数组并输出结果的 for 循环。
- “$list[$i]->attributes()->man_no;” 读取元素的 man_no 属性。
- “$list[$i]->name;” 读取 name 子元素的值。
- “$list[$i]->position;” 读取 position 子元素的值。
测试我们的应用程序
假设您将文件 index.php 保存在 phptus/xml 文件夹中,请浏览到 URL https:///phptuts/xml/index.php。
如何使用 PHP 创建 XML 文档
接下来我们将了解如何使用 PHP 创建 XML 文档。
我们将使用上面的示例在 DOM 树图中使用。
以下代码使用 PHP 内置的 DOMDocument 类来创建 XML 文档。
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'The Campaign'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
此处,
- “$dom = new DOMDocument();” 创建 DOMDocument 类的实例。
- “$dom->encoding = ‘utf-8’;” 将文档编码设置为 utf-8。
- “$dom->xmlVersion = ‘1.0’;” 指定版本号 1.0。
- “$dom->formatOutput = true;” 确保输出格式正确。
- “$root = $dom->createElement(‘Movies’);” 创建名为 Movies 的根节点。
- “$attr_movie_id = new DOMAttr(‘movie_id’, ‘5467’);” 定义 Movies 节点的 movie_id 属性。
- “$child_node_element_name = $dom->createElement(‘ElementName’, ‘ElementValue’)” 创建 Movies 节点的子节点。ElementName 指定元素的名称,例如 Title。ElementValue 设置子节点的值,例如 The Campaign。
- “$root->appendChild($movie_node);” 将 movie_node 元素附加到根节点 Movies。
- “$dom->appendChild($root);” 将根节点附加到 XML 文档。
- “$dom->save($xml_file_name);” 将 XML 文件保存在 Web 服务器的根目录中。
- “echo ‘<a href= “‘.$xml_file_name.'”>’ . $xml_file_name . ‘</a> 已成功创建’;” 创建 XML 文件的链接。
测试我们的应用程序
假设您将 create_movies_list 文件保存在 phptuts/xml 文件夹中,请浏览到 URL https:///phptuts/xml/create_movies_list.php。
点击 movies_list_xml 链接。
摘要
- XML 是可扩展标记语言的缩写。
- XML 可用于在系统之间交换信息或存储应用程序的配置设置等。
- DOM 是文档对象模型的缩写。XML DOM 将 XML 文档视为树形结构。
- XML 解析器是一种将 XML 文档转换为类似 DOM 树形结构的文档的程序。
- CDATA 用于在解析 XML 文档时忽略特殊字符。
- PHP 使用 simplexml_load_file 读取 XML 文档并将结果返回为数值数组。
- PHP DOMDocument 类用于创建 XML 文件。