-
-
/** xml 文件分析类
- * date: 2013-02-01
- * author: fdipzone
- * ver: 1.0
- * edition bbs.it-home.org
- * 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);
- }
- }
- ?>
-
复制代码
2,演示示例
-
-
require "XMLParser.class.php";
-
- $xmlfile = 'file.xml';
- $xmlstring = '
-
- 1000
- 100
- fdipzone
- 1
- 28
';
-
- echo '
'; <li> <li>$xml_parser = new XMLParser(); <li>echo "response xmlfile\r\n"; <li>list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile); <li>if($flag){ <li> print_r($xmldata); <li>} <li> <li>echo "response xmlstring\r\n"; <li>list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring); <li>if($flag){ <li> print_r($xmldata); <li>} <li> <li>echo '登录后复制 ';
- ?>
复制代码
附,PHP XML预定义常量: http://bbs.it-home.org/shouce/php5/libxml.constants.html
|