在现代 Web 应用开发中,XML(可扩展标记语言)作为数据交换格式之一,仍然在许多场景中广泛应用。PHP 提供了多种处理 XML 的函数库,其中 xml_parse 和 domxml 是两种常见的解析方式,各自适用于不同的需求。本文将分别介绍这两种方法,并提供实用代码示例,帮助你高效掌握 XML 数据的解析技巧。
xml_parse 是 PHP 中的 XML 解析器函数,属于基于事件的解析方式(也称为 SAX 解析)。它在读取 XML 数据的过程中触发特定的回调函数,适合处理大型 XML 文件,因为它不需要将整个文档加载进内存。
<?php
$xml_data = <<<XML
<books>
<book>
<title>PHP 编程实战</title>
<author>张三</author>
</book>
<book>
<title>XML 与 Web 服务</title>
<author>李四</author>
</book>
</books>
XML;
$parser = xml_parser_create("UTF-8");
function startElement($parser, $name, $attrs) {
echo "开始元素:$name\n";
}
function endElement($parser, $name) {
echo "结束元素:$name\n";
}
function characterData($parser, $data) {
$data = trim($data);
if (!empty($data)) {
echo "数据:$data\n";
}
}
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
if (!xml_parse($parser, $xml_data, true)) {
die("XML 解析错误:" . xml_error_string(xml_get_error_code($parser)));
}
xml_parser_free($parser);
?>
开始元素:BOOKS
开始元素:BOOK
开始元素:TITLE
数据:PHP 编程实战
结束元素:TITLE
开始元素:AUTHOR
数据:张三
结束元素:AUTHOR
结束元素:BOOK
开始元素:BOOK
开始元素:TITLE
数据:XML 与 Web 服务
结束元素:TITLE
开始元素:AUTHOR
数据:李四
结束元素:AUTHOR
结束元素:BOOK
结束元素:BOOKS
优点:解析速度快,内存占用低。
适用场景:大型 XML 文件、仅需读取而不修改 XML 内容。
domxml 提供了一种更结构化的 XML 处理方式,通过将整个 XML 文档加载为 DOM 树,可以像操作 HTML DOM 一样操作 XML 数据。
注意:从 PHP5 起,domxml 被替换为 DOM 扩展(即 DOMDocument 类),本文统一采用后者示例。
<?php
$xml_string = <<<XML
<books>
<book>
<title>PHP 编程实战</title>
<author>张三</author>
<link>https://www.m66.net/book/php</link>
</book>
<book>
<title>XML 与 Web 服务</title>
<author>李四</author>
<link>https://www.m66.net/book/xml</link>
</book>
</books>
XML;
$doc = new DOMDocument();
$doc->loadXML($xml_string);
$books = $doc->getElementsByTagName("book");
foreach ($books as $book) {
$title = $book->getElementsByTagName("title")->item(0)->nodeValue;
$author = $book->getElementsByTagName("author")->item(0)->nodeValue;
$link = $book->getElementsByTagName("link")->item(0)->nodeValue;
echo "书名:$title\n";
echo "作者:$author\n";
echo "链接:$link\n\n";
}
?>
书名:PHP 编程实战
作者:张三
链接:https://www.m66.net/book/php
书名:XML 与 Web 服务
作者:李四
链接:https://www.m66.net/book/xml
优点:结构清晰,操作方便,适用于读取、修改、生成 XML。
适用场景:小到中等体量的 XML 文件、需要修改结构或创建新文档。