php 基于事件的xml处理
2013-11-22 03:52
417 查看
php 有两种xml的处理方法:1.基于结构树的处理;2.基于事件的处理。今天介绍php 基于事件的xml处理。
先看下面一个例子:
先定义一个 test.xml 文件
再写一个 php_xml.php 文件处理 test.xml:
运行这个文件,输出如下:
具体的工作流程:
a.先用 xml_parser_create() 初始化一个 xml 解析器;
b.定义几个函数来处理不同的事件,如上述代码中的start()函数,stop()函数和char()函数;
start()函数:遇到的开标签事件时调用;
stop()函数:遇到的闭标签事件时调用;
char()函数:遇到标签里面内容时调用;
c.用 xml_set_element_handler()设置遇到标签时处理的事件;
d.用xml_set_character_data_handler()设置遇到标签内容时处理的事件;
e.用fopen()打开test.xml文件都里面的内容;
f.用xml_parse()函数解析test.xml;
g.错误处理;
h.用xml_parser_free()来释放xml解析器的内存。
详情请查看:http://www.w3schools.com/php/php_xml_parser_expat.asp
先看下面一个例子:
先定义一个 test.xml 文件
<?xml version="1.0" encoding="UTF-8"?> <note> <to>ZS</to> <from>Shexiao</from> <heading>Greeting</heading> <body>I miss you</body> </note>
再写一个 php_xml.php 文件处理 test.xml:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php $parser= xml_parser_create(); function start($parser,$element_name,$element_attrs){ switch($element_name){ case "NOTE": echo "--NOTE--<br>"; break; case "TO": echo "TO:"; break; case "FROM": echo "FROM:"; break; case "HEADING": echo "HEADING:"; break; case "BODY": echo "MESSAGE:"; break; } } function stop($parser,$element_name){ echo "<br>"; } function char($parser,$data){ echo $data; } xml_set_element_handler($parser, "start", "stop"); xml_set_character_data_handler($parser, "char"); $fp=fopen("test.xml","r"); while($data= fread($fp, 4096)){ xml_parse($parser,$data,feof($fp)) or die(sprintf("XML Error:%s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } xml_parser_free($parser); ?> </body> </html>
运行这个文件,输出如下:
--NOTE-- TO:ZS FROM:Shexiao HEADING:Greeting MESSAGE:I miss you
具体的工作流程:
a.先用 xml_parser_create() 初始化一个 xml 解析器;
b.定义几个函数来处理不同的事件,如上述代码中的start()函数,stop()函数和char()函数;
start()函数:遇到的开标签事件时调用;
stop()函数:遇到的闭标签事件时调用;
char()函数:遇到标签里面内容时调用;
c.用 xml_set_element_handler()设置遇到标签时处理的事件;
d.用xml_set_character_data_handler()设置遇到标签内容时处理的事件;
e.用fopen()打开test.xml文件都里面的内容;
f.用xml_parse()函数解析test.xml;
g.错误处理;
h.用xml_parser_free()来释放xml解析器的内存。
详情请查看:http://www.w3schools.com/php/php_xml_parser_expat.asp
相关文章推荐
- PHP基于事件的XML解析工具类
- PHP Document解析XML(对比基于事件xml解析)
- php SOAP 错误[Client] looks like we got no XML document 处理办法
- 基于python的事件处理模型
- PHP使用xmllint命令处理xml与html的方法
- ARC2(基于PHP的RDF处理工具)使用教程
- php简单处理XML数据的方法示例
- 基于接口回调的事件处理
- 【Java Web】——基于事件流的访问XML方式之推拉模型
- Android的事件处理机制(一)------基于回调机制的事件处理
- 如何安全删除基于对话框的MFC中控件的事件处理程序
- 基于回调的事件处理——基于回调的事件传播
- Android基础入门教程——3.1 基于监听的事件处理机制
- 一种简单的基于任务的事件异步处理的解决方案
- 事件处理机制之基于监听的事件处理机制
- PHP下处理HTTP--json--xml信息
- 【Android事件的处理】---基于回调的事件处理
- PHP基于DOM创建xml文档的方法示例
- [支付宝小程序PHP全栈开发]三、前端逻辑处理之事件