PHP XML 파일 구문 분석 클래스(데모 코드 포함)

WBOY
풀어 주다: 2016-07-25 08:55:21
원래의
789명이 탐색했습니다.
  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. /** 输出返回

  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>  </li>
    <li>$xml_parser = new XMLParser();  </li>
    <li>echo "response xmlfilern";  </li>
    <li>list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile);  </li>
    <li>if($flag){  </li>
    <li>    print_r($xmldata);  </li>
    <li>}  </li>
    <li>  </li>
    <li>echo "response xmlstringrn";  </li>
    <li>list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring);  </li>
    <li>if($flag){  </li>
    <li>    print_r($xmldata);  </li>
    <li>}  </li>
    <li>  </li>
    <li>echo '
    ';
  11. ?>
复制代码

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



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!