PHP SAX解析器示例

PHP SAX解析器示例

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

SAX.xml

XML应如下所示−

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

   <course>
      <name>Java</name>
      <country>India</country>
      <email>contact@tutorialspoint.com</email>
      <phone>123456789</phone>
   </course>

   <course>
      <name>HTML</name>
      <country>India</country>
      <email>contact@tutorialspoint.com</email>
      <phone>123456789</phone>
   </course>
</tutors>

SAX.php

Php文件应该如下所示−

<?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) {
      globaltutors, elements;

      if(!empty(name)) {
         if (name == 'COURSE') {
            // creating an array to store informationtutors []= 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) {
      globaltutors, 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 parseri = 1;

   foreach(tutors ascourse) {
      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++; 
   }
?>

它将产生以下结果−

PHP SAX解析器示例

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程