x
 
<!DOCTYPE html>
<html>
<body>
<?php
$parser = xml_parser_create(); // 创建 XML 解析器
// 处理开始标签的函数
function start($parser, $element_name, $element_attrs) {
  switch($element_name) {
    case "NOTE":
      echo "NOTE<br>"; // 如果是 NOTE 标签,输出 "NOTE"
      break;
    case "TO":
      echo "To: "; // 如果是 TO 标签,输出 "To: "
      break;
    case "FROM":
      echo "From: "; // 如果是 FROM 标签,输出 "From: "
      break;
    case "HEADING":
      echo "Heading: "; // 如果是 HEADING 标签,输出 "Heading: "
      break;
    case "BODY":
      echo "Message: "; // 如果是 BODY 标签,输出 "Message: "
  }
}
// 处理结束标签的函数
function stop($parser, $element_name) {
  echo "<br>"; // 在每个标签结束时换行
}
// 处理字符数据的函数
function char($parser, $data) {
  echo $data; // 输出标签中的字符数据
}
// 设置开始标签和结束标签的处理函数
xml_set_element_handler($parser, "start", "stop");
// 设置字符数据的处理函数
xml_set_character_data_handler($parser, "char");
// 打开 XML 文件
$fp = fopen("../demo/xml/note.xml", "r");
// 逐块读取并解析 XML 数据
while ($data = fread($fp, 4096)) {
  xml_parse($parser, $data, feof($fp)) or
  die (sprintf("XML 错误:%s 在第 %d 行",
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
}
// 释放 XML 解析器
xml_parser_free($parser);
// 关闭文件
fclose($fp);
?>
</body>
</html>