当前位置:Gxlcms > PHP教程 > php的XML文件解释类应用实例_PHP教程

php的XML文件解释类应用实例_PHP教程

时间:2021-07-01 10:21:17 帮助过:20人阅读

php的XML文件解释类应用实例


XMLParser.class.php类文件如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

/** XML 文件分析类

* Date: 2013-02-01

* Author: fdipzone

* Ver: 1.0

*

* func:

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

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

*/

class XMLParser{

/** 读取xml文件

* @param String $xmlfile

* @return Array

*/

public function loadXmlFile($xmlfile){

// get xmlfile content

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

// parser xml

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

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

}

/** 读取xmlstring

* @param String $xmlstring

* @return Array

*/

public function loadXmlString($xmlstring){

// parser xml

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

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

}

/** 解释xml内容

* @param String $xmlstring

* @return Array

*/

private function parser($xmlstring){

$flag = false;

$data = array();

// check xml format

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

$flag = true;

// xml to object

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

// object to array

$this->objectToArray($data);

}

return array($flag, $data);

}

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

* @param String $xmlstring

* @return boolean

*/

private function checkXmlFormat($xmlstring){

if($xmlstring==''){

return false;

}

$xml_parser_obj = xml_parser_create();

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

return true;

}else{

return false;

}

}

/** object 转 Array

* @param object $object

* @return Array

*/

private function objectToArray(&$object){

$object = (array)$object;

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

if($value==''){

$object[$key] = "";

}else{

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

$this->objectToArray($value);

$object[$key] = $value;

}

}

}

}

/** 输出返回

* @param boolean $flag true:false

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

* @return Array

*/

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

return array($flag, $data);

}

}

?>

Demo示例程序如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

require "XMLParser.class.php";

$xmlfile = 'file.xml';

$xmlstring = '

1000

100

fdipzone

1

28

';

echo '

'; 

$xml_parser = new XMLParser();

echo "response xmlfile\r\n";

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

if($flag){

print_r($xmldata);

}

echo "response xmlstring\r\n";

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

if($flag){

print_r($xmldata);

}

echo '

';

?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/882704.htmlTechArticlephp的XML文件解释类应用实例 XMLParser.class.php类文件如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38...

人气教程排行