php XML文件解析类(附演示代码)

php中文网
发布: 2016-07-25 08:55:21
原创
931人浏览过
  1. /** xml 文件分析类

  2. * date: 2013-02-01
  3. * author: fdipzone
  4. * ver: 1.0
  5. * edition bbs.it-home.org
  6. * func:
  7. * loadxmlfile($xmlfile) 读入xml文件输出array
  8. * loadxmlstring($xmlstring) 读入xmlstring 输出array
  9. */
  10. class xmlparser{
  11. /** 读取xml文件
  12. * @param string $xmlfile
  13. * @return array
  14. */
  15. public function loadxmlfile($xmlfile){
  16. // get xmlfile content
  17. $xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : '';
  18. // parser xml
  19. list($flag, $data) = $this->parser($xmlstring);
  20. return $this->response($flag, $data);
  21. }
  22. /** 读取xmlstring
  23. * @param string $xmlstring
  24. * @return array
  25. */
  26. public function loadxmlstring($xmlstring){
  27. // parser xml
  28. list($flag, $data) = $this->parser($xmlstring);
  29. return $this->response($flag, $data);
  30. }
  31. /** 解释xml内容
  32. * @param string $xmlstring
  33. * @return array
  34. */
  35. private function parser($xmlstring){
  36. $flag = false;
  37. $data = array();
  38. // check xml format
  39. if($this->checkxmlformat($xmlstring)){
  40. $flag = true;
  41. // xml to object
  42. $data = simplexml_load_string($xmlstring, 'simplexmlelement', libxml_nocdata);
  43. // object to array
  44. $this->objecttoarray($data);
  45. }
  46. return array($flag, $data);
  47. }
  48. /** 检查xml格式是否正确
  49. * @param string $xmlstring
  50. * @return boolean
  51. */
  52. private function checkxmlformat($xmlstring){
  53. if($xmlstring==''){
  54. return false;
  55. }
  56. $xml_parser_obj = xml_parser_create();
  57. if(xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs)===1){ // 1:success 0:fail
  58. return true;
  59. }else{
  60. return false;
  61. }
  62. }
  63. /** object 转 Array

  64. * @param object $object
  65. * @return Array
  66. */
  67. private function objectToArray(&$object){
  68. $object = (array)$object;
  69. foreach($object as $key => $value){
  70. if($value==''){
  71. $object[$key] = "";
  72. }else{
  73. if(is_object($value) || is_array($value)){
  74. $this->objectToArray($value);
  75. $object[$key] = $value;
  76. }
  77. }
  78. }
  79. }
  80. /** 输出返回

    芦笋演示
    芦笋演示

    一键出成片的录屏演示软件,专为制作产品演示、教学课程和使用教程而设计。

    芦笋演示 34
    查看详情 芦笋演示
  81. * @param boolean $flag true:false
  82. * @param Array $data 转换后的数据
  83. * @return Array
  84. */
  85. private function response($flag=false, $data=array()){
  86. return array($flag, $data);
  87. }
  88. }
  89. ?>
复制代码

2,演示示例

  1. require "XMLParser.class.php";
  2. $xmlfile = 'file.xml';
  3. $xmlstring = '
  4. 1000
  5. 100
  6. fdipzone
  7. 1
  8. 28
  9. ';
  10. echo '
    ';  <li>  <li>$xml_parser = new XMLParser();  <li>echo "response xmlfile\r\n";  <li>list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile);  <li>if($flag){  <li>    print_r($xmldata);  <li>}  <li>  <li>echo "response xmlstring\r\n";  <li>list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring);  <li>if($flag){  <li>    print_r($xmldata);  <li>}  <li>  <li>echo '
    登录后复制
    ';
  11. ?>
复制代码

附,PHP XML预定义常量: http://bbs.it-home.org/shouce/php5/libxml.constants.html



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号