PHPSAX解析
SAX解析器用于解析xml文件,并且比xml解析器和DOM更好地用于内存管理。它不会在内存中保留任何数据,因此可以用于非常大的文件。以下示例将显示如何使用SAX API从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>
<?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++; } ?>
它将产生以下输出-
祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)
精选教程推荐
👇 以下精选教程可能对您有帮助,拓展您的技术视野
暂无学习笔记,成为第一个分享的人吧!
您的笔记将帮助成千上万的学习者