您现在的位置: 破洛洛 >> 建站学院 >> 网站开发 >> PHP教程 >> PHP综合教程 >> 正文

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

作者:佚名 来源:网络整理 更新时间:2014-10-15
分享到

 XMLParser.class.php类文件如下:

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

<?php 

/** 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示例程序如下:

21

22

23

24

25

26

27

28

<?php 

require "XMLParser.class.php"; 

   

$xmlfile = 'file.xml'; 

$xmlstring = '<?xml version="1.0" encoding="utf-8"?> 

<xmlroot> 

<status>1000</status> 

<info></info> 

<result><id>100</id> 

<name>fdipzone</name> 

<gender>1</gender> 

<age>28</age> 

</result> 

</xmlroot>'; 

echo '<pre>'; 

$xml_parser = new XMLParser(); 

echo "response xmlfilern"; 

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

if($flag){ 

  print_r($xmldata); 

echo "response xmlstringrn"; 

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

if($flag){ 

  print_r($xmldata); 

echo '</pre>'; 

?>

转载请注明:破洛洛(谢谢合作)
网友评论: