PHP语言:XML文件解释类
小标 2018-07-12 来源 : 阅读 989 评论 0

摘要:本文主要向大家介绍了PHP语言的XML文件解释类,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

 本文主要向大家介绍了PHP语言的XML文件解释类,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

php XML文件解释类

XMLParser.class.php

[php] view plain copy

1. <?php  

2. /** XML 文件分析类 

3. *   Date:   2013-02-01 

4. *   Author: fdipzone 

5. *   Ver:    1.0 

6. * 

7. *   func: 

8. *   loadXmlFile($xmlfile)     读入xml文件输出Array 

9. *   loadXmlString($xmlstring) 读入xmlstring 输出Array 

10. */  

11.   

12. class XMLParser{  

13.   

14.     /** 读取xml文件 

15.     * @param  String  $xmlfile 

16.     * @return Array 

17.     */  

18.     public function loadXmlFile($xmlfile){  

19.   

20.         // get xmlfile content  

21.         $xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : '';  

22.   

23.         // parser xml  

24.         list($flag, $data) = $this->parser($xmlstring);  

25.   

26.         return $this->response($flag, $data);  

27.   

28.     }  

29.   

30.   

31.     /** 读取xmlstring 

32.     * @param  String $xmlstring 

33.     * @return Array 

34.     */  

35.     public function loadXmlString($xmlstring){  

36.   

37.         // parser xml  

38.         list($flag, $data) = $this->parser($xmlstring);  

39.   

40.         return $this->response($flag, $data);  

41.   

42.     }  

43.   

44.   

45.     /** 解释xml内容 

46.     * @param   String $xmlstring 

47.     * @return  Array 

48.     */  

49.     private function parser($xmlstring){  

50.   

51.         $flag = false;  

52.         $data = array();  

53.   

54.         // check xml format  

55.         if($this->checkXmlFormat($xmlstring)){  

56.             $flag = true;  

57.               

58.             // xml to object  

59.             $data = simpleXML_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA);  

60.               

61.             // object to array  

62.             $this->objectToArray($data);  

63.         }  

64.   

65.         return array($flag, $data);  

66.   

67.     }  

68.   

69.   

70.     /** 检查xml格式是否正确 

71.     * @param  String $xmlstring 

72.     * @return boolean 

73.     */  

74.     private function checkXmlFormat($xmlstring){  

75.           

76.         if($xmlstring==''){  

77.             return false;  

78.         }  

79.   

80.         $xml_parser_obj = xml_parser_create();  

81.   

82.         if(xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs)===1){ // 1:success 0:fail  

83.             return true;  

84.         }else{  

85.             return false;  

86.         }  

87.   

88.     }  

89.   

90.   

91.     /** object 转 Array 

92.     * @param  object $object 

93.     * @return Array 

94.     */  

95.     private function objectToArray(&$object){  

96.           

97.         $object = (array)$object;  

98.           

99.         foreach($object as $key => $value){  

100.             if($value==''){  

101.                 $object[$key] = "";  

102.             }else{  

103.                 if(is_object($value) || is_array($value)){  

104.                     $this->objectToArray($value);  

105.                     $object[$key] = $value;  

106.                 }  

107.             }  

108.         }  

109.       

110.     }  

111.   

112.   

113.     /** 输出返回 

114.     * @param  boolean $flag true:false 

115.     * @param  Array   $data 转换后的数据 

116.     * @return Array 

117.     */  

118.     private function response($flag=false, $data=array()){  

119.       

120.         return array($flag, $data);  

121.       

122.     }  

123.   

124. }  

125.   

126. ?>  

Demo:

[php] view plain copy

1. <?php  

2. require "XMLParser.class.php";  

3.   

4. $xmlfile = 'file.xml';  

5. $xmlstring = '  

6.   

7. 1000  

8.   

9. 100  

10. fdipzone  

11. 1  

12. 28  

13.   

14. ';  

15.   

16. echo '

';

17.   

18. $xml_parser = new XMLParser();  

19. echo "response xmlfile\r\n";  

20. list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile);  

21. if($flag){  

22.     print_r($xmldata);  

23. }  

24.   

25. echo "response xmlstring\r\n";  

26. list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring);  

27. if($flag){  

28.     print_r($xmldata);  

29. }  

30.   

31. echo '';  

32. ?>  


本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言PHP频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程