x
 
<!DOCTYPE html>
<html>
<body>
<?php
// 定义一个 XMLParser 类,用于解析 XML 数据
class XMLParser
{
  private $parser; // 用于存储 XML 解析器的私有属性
  // 构造函数:初始化 XML 解析器并设置处理函数
  function __construct() {
    $this->parser = xml_parser_create(); // 创建 XML 解析器
    xml_set_object($this->parser, $this); // 将解析器与当前对象关联
    xml_set_element_handler($this->parser, "start_tag", "end_tag"); // 设置开始标签和结束标签的处理函数
    xml_set_character_data_handler($this->parser, "cdata"); // 设置字符数据的处理函数
  }
  // 析构函数:释放 XML 解析器并清理资源
  function __destruct() {
    xml_parser_free($this->parser); // 释放 XML 解析器
    unset($this->parser); // 清理解析器属性
  }
  // 解析 XML 数据
  function parse($data) {
    xml_parse($this->parser, $data); // 解析传入的 XML 数据
  }
  // 处理开始标签及其属性
  function start_tag($parser, $tag, $attributes) {
    var_dump($tag, $attributes); // 输出标签名称和属性
  }
  // 处理字符数据
  function cdata($parser, $cdata) {
    var_dump($cdata); // 输出字符数据
  }
  // 处理结束标签
  function end_tag($parser, $tag) {
    var_dump($tag); // 输出标签名称
  }
}
// 创建 XMLParser 对象并解析 XML 字符串
$xml_parser = new XMLParser(); // 实例化 XMLParser 类
$xml_parser->parse("<p id='test'>Hello World!</p>"); // 解析 XML 数据
?>
</body>
</html>