注册 登录
八达网 返回首页

的个人空间 https://www.8-da.com/?0 [收藏] [复制] [RSS]

日志

PHP读写XML的实例

已有 232 次阅读2008-4-2 14:15 |个人分类:PHP

建立一个   data.xml   文件,内容:  
  <NewDataSet>  
      <Login>  
          <User_ID>001</User_ID>  
          <User_Cname>用户1</User_Cname>  
      </Login>  
      <Login>  
          <User_ID>009</User_ID>  
          <User_Cname>用户2</User_Cname>  
      </Login>  
  </NewDataSet>  
  ---------------------------------------------------------------  
  PHP   代码:  
  <?php  
  $file   =   "data.xml";  
  $currentTag   =   "";  
  $user_id   =   "";  
  $user_cname   =   "";  
  $users   =   array();  
  function   startElement($parser,   $name,   $attrs)   {  
  global   $currentTag;  
          $currentTag   =   $name;  
  }  
  function   endElement($parser,   $name)   {  
          global   $users,   $user_id,   $user_cname;  
           
          if(strcmp($name,   "LOGIN")   ==   0)   {  
          $user_id   =   trim("$user_id");  
          $user_cname   =   trim("$user_cname");  
           
          $users[]   =   array("USER_ID"   =>   $user_id,   "USER_CNAME"   =>   $user_cname);  
           
          $user_id   =   "";  
          $user_cname   =   "";  
          }  
  }  
  function   characterData($parser,   $data)   {  
  global   $currentTag,   $user_id,   $user_cname;  
   
  switch   ($currentTag)   {  
  case "USER_ID":  
  $user_id   .=   $data;  
  break;  
  case "USER_CNAME":  
  $user_cname   .=   $data;  
  break;  
  default :  
  }  
  }  
  function   readUserInfo()   {  
  global   $file,   $users;  
   
  $xml_parser   =   xml_parser_create();  
  xml_parser_set_option($xml_parser,   XML_OPTION_CASE_FOLDING,   true);  
  xml_set_element_handler($xml_parser,   "startElement",   "endElement");  
  xml_set_character_data_handler($xml_parser,   "characterData");  
   
  if   (!($fp   =   fopen($file,   "r")))   {  
          die("could   not   open   XML   input");  
  }  
   
  while   ($data   =   fread($fp,   4096))   {  
          if   (!xml_parse($xml_parser,   $data,   feof($fp)))   {  
                  die(sprintf("XML   error:   %s   at   line   %d",  
                                          xml_error_string(xml_get_error_code($xml_parser)),  
                                          xml_get_current_line_number($xml_parser)));  
          }  
  }  
   
  xml_parser_free($xml_parser);  
  return   $users;  
  }  
  function   printUserInfo($user_id,   $user_cname)   {  
  print   "<tr   height='21'>";  
  print   "<td>$user_id</td>";  
  print   "<td>$user_cname</td>";  
  print   "</tr>";  
  }  
  ?>  
  <html>  
  <head>  
  <title>User   Infomation</title>  
  </head>  
  <body>  
  <table   border="1">  
  <tr   height="21"   align="center">  
  <td   width="80"   bgcolor="#EEEEEE">User   ID</td>  
  <td   width="100"   bgcolor="#EEEEEE">User   NAME</td>  
  </tr>  
  <?php  
  $users   =   readUserInfo();  
  $num_rows   =   count($users);  
  for($i   =   0;   $i   <   $num_rows;   $i++)   {  
  printUserInfo($users[$i]["USER_ID"],   $users[$i]["USER_CNAME"]);  
  }  
  ?>  
  </table>  
  </body>  
  </html>  


 PHP   代码来自《PHP   高级编程》一书。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|Archiver|八达网    

GMT+8, 2025-11-22 07:23

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部