欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

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

程序员文章站 2022-03-30 13:41:24
...

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 '

';

?>