Ví dụ SAX Parser trong PHP SAX Parser được sử dụng để phân tích cú pháp XML file và tốt hơn để quản lý bộ nhớ so với Simple XML Parser và DOM.. Nó không giữ bất kỳ Data trong bộ nhớ, vì
Trang 1Ví dụ SAX Parser trong PHP SAX Parser được sử dụng để phân tích cú pháp XML file và tốt hơn để quản lý bộ nhớ so với Simple XML Parser và DOM Nó không giữ bất kỳ Data trong bộ nhớ, vì thế nó có thể được sử dụng với số lượng file lớn Ví dụ sau minh họa cách lấy data từ XML bởi sử dụng SAX API
SAX.xml
XML nên là như sau:
<?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>
Trang 2SAX.php
Php file nên là như sau:
<?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;
}
Trang 3}
// 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
Trang 4$i= ;
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++;
}
?>
Nó sẽ cho kết quả:
course No - 1
course Name - Android
Country - India
Email - contact@tutorialspoint.com
Phone - 123456789