PHPSAX解析

/ / PHPSAX解析

SAX解析器用于解析xml文件,并且比xml解析器和DOM更好地用于内存管理。它不会在内存中保留任何数据,因此可以用于非常大的文件。以下示例将显示如何使用SAX API从xml获取数据。

SAX.xml 内容如下-

无涯教程网

<?xml version="1.0" encoding="utf-8"?>
<tutors>
   <course>
      <name>Android</name>
      <country>India</country>
      <email>contact@learnfk.com</email>
      <phone>123456789</phone>
   </course>
   
   <course>
      <name>Java</name>
      <country>India</country>
      <email>contact@learnfk.com</email>
      <phone>123456789</phone>
   </course>
   
   <course>
      <name>HTML</name>
      <country>India</country>
      <email>contact@learnfk.com</email>
      <phone>123456789</phone>
   </course>
</tutors>

SAX.php 内容应如下-

链接:https://www.learnfk.comhttps://www.learnfk.com/php/php-sax-parser-example.html

来源:LearnFk无涯教程网

<?php
   //Reading XML using the SAX(Simple API for XML) parser 
   
   $tutors  =array();
   $elements  =null;
   
   //Called to this function when tags are opened 
   function startElements($parser, $name, $attrs) {
      global $tutors, $elements;
      
      if(!empty($name)) {
         if ($name == 'COURSE') {
            //creating an array to store information
            $tutors []= array();
         }
         $elements=$name;
      }
   }
   
   //Called to this function when tags are closed 
   function endElements($parser, $name) {
      global $elements;
      
      if(!empty($name)) {
         $elements=null;
      }
   }
   
   //Called on the text between the start and end of the tags
   function characterData($parser, $data) {
      global $tutors, $elements;
      
      if(!empty($data)) {
         if ($elements == 'NAME' || $elements == 'COUNTRY' ||  $elements == 'EMAIL' ||  $elements == 'PHONE') {
            $tutors[count($tutors)-1][$elements]=trim($data);
         }
      }
   }
   
   //Creates a new XML parser and returns a resource handle referencing it to be used by the other XML functions. 
   $parser=xml_parser_create(); 
   
   xml_set_element_handler($parser, "startElements", "endElements");
   xml_set_character_data_handler($parser, "characterData");
   
   //open xml file
   if (!($handle=fopen('sax.xml', "r"))) {
      die("could not open XML input");
   }
   
   while($data=fread($handle, 4096)) //read xml file {
      xml_parse($parser, $data);  //start parsing an xml document 
   }
   
   xml_parser_free($parser); //deletes the parser
   $i=1;
   
   foreach($tutors as $course) {
      echo "course No- ".$i.'<br/>';
      echo "course Name- ".$course['NAME'].'<br/>';
      echo "Country- ".$course['COUNTRY'].'<br/>';
      echo "Email- ".$course['EMAIL'].'<br/>';
      echo "Phone- ".$course['PHONE'].'<hr/>'; 
      $i++; 
   }
?>

它将产生以下输出-

SAX

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

RAG与Agent性能调优50讲 -〔尹会生〕

大型Android系统重构实战 -〔黄俊彬〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

Spring Cloud 微服务项目实战 -〔姚秋辰(姚半仙)〕

MySQL 必知必会 -〔朱晓峰〕

手机摄影 -〔@随你们去〕

编辑训练营 -〔总编室〕

TensorFlow快速入门与实战 -〔彭靖田〕

机器学习40讲 -〔王天一〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者