摘要:本文主要向大家介绍了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.
8.
9.
10.
11.
12.
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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号