Cộng đồng chia sẻ tri thức Doc24.vn

Ví dụ SAX Parser trong PHP

Gửi bởi: Phạm Thọ Thái Dương vào ngày 2019-10-25 04:21:59

Mục lục
* * * * *

SAX.xml

XML nên là như sau:

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

SAX.php

Php file nên là như sau:

<?php
   //đọc XML bởi sử dụng SAX (viết tắt của Simple API for XML) parser 
   
   $tutors   = array();
   $elements   = null;
   
   // gọi hàm này khi thẻ (tag) được mở 
   function startElements($parser, $name, $attrs)  
   {
      global $tutors, $elements;
      
      if(!empty($name))
      {
         if ($name == 'COURSE') {
            // tạo một mảng để lưu giữ thông tin
            $tutors []= array();
         }
         $elements = $name;
      }
   }
   
   // gọi hàm này khi thẻ (tag) được đóng  
   function endElements($parser, $name) 
   {
      global $elements;
      
      if(!empty($name))
      {
         $elements = null;
      }
   }
   
   // gọi trên phần text giữa thẻ đóng và thẻ mở
   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);
         }
      }
   }
   
   // Tạo một XML parser mới và trả về một resource handle
   // tham chiếu tới để được sử dụng bởi các hàm XML khác. 
   $parser = xml_parser_create(); 
   
   xml_set_element_handler($parser, "startElements", "endElements");
   xml_set_character_data_handler($parser, "characterData");
   
   // mở xml file
   if (!($handle = fopen('sax.xml', "r"))) {
      die("Không thể mở XML input");
   }
   
   while($data = fread($handle, 4096)) // đọc xml file
   {
      xml_parse($parser, $data);  // bắt đầu parse tài liệu XML 
   }
   
   xml_parser_free($parser); // Xóa parser
   $i=1;
   
   foreach($tutors as $course)
   {
      echo "ID - ".$i.'<br/>';
      echo "Tên khóa học - ".$course['NAME'].'<br/>';
      echo "Quốc gia - ".$course['COUNTRY'].'<br/>';
      echo "Email - ".$course['EMAIL'].'<br/>';
      echo "Phone - ".$course['PHONE'].'<hr/>'; 
      $i++; 
   }
?>

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:

Link Demo

Lượt xem: 167

Các bài học liên quan