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 对象 Java脚本, Python、以及 PHP 等等。

关键字 CDATA 是“(未解析)字符数据”的首字母缩写,用于在解析 XML 文档时忽略“<,>”等特殊字符。

为什么使用 XML?

  • SOAP 和 REST 等 Web 服务使用 XML 格式来交换信息。了解 XML 是什么以及它如何工作将使您作为开发人员获得竞争优势,因为现代应用程序大量使用 Web 服务。
  • XML 文档可用于存储应用程序的配置设置
  • 它允许您创建自己的自定义标签,使其更加灵活。

XML 文档示例

假设您正在开发一个从 Web 服务获取 XML 格式的数据的应用程序。

下面是 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 版本和编码
  • “ ” 是根元素。
  • “ … ”分别是管理和销售的子元素。

如何使用 PHP 读取 XML

现在让我们编写读取员工 XML 文档并在 Web 浏览器中显示结果的代码。 索引.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;”获取记录节点的内容。
  • “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 http://localhost/phptuts/xml/index.php

使用 PHP 读取 XML

如何使用 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 节点的电影 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 ' '. $xml_file_name. '已成功创建';”创建指向 XML 文件的链接。

测试我们的应用

假设你将 create_movies_list 文件保存在 phptuts/xml 文件夹中,浏览到 URL http://localhost/phptuts/xml/create_movies_list.php

使用 PHP 创建 XML 文档

点击 movies_list_xml 链接

使用 PHP 创建 XML 文档

结语

  • XML 是可扩展标记语言的缩写
  • XML 可用于在系统之间交换信息或存储应用程序的配置设置等。
  • DOM 是文档对象模型的缩写。XML DOM 将 XML 文档视为树结构
  • XML 解析器是一个将 XML 文档转换为类似 DOM 树结构的文档的程序。
  • CDATA 用于在解析 XML 文档时忽略特殊字符。
  • PHP 使用 simplexml_load_file 读取 XML 文档并将结果作为数字数组返回
  • PHP DOMDocument 类用于创建 XML 文件。