栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP中使用SimpleXML检查XML文件结构实例

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP中使用SimpleXML检查XML文件结构实例

利用 SimpleXML 去检查 XML 结构是否符合规格,为了让这个程序可以多用途,采用了一个基准文件的作为结构准则,依据里面定义的节点跟属性,去检查文件是否符合基本要求的格式。

复制代码 代码如下:
   
   
function checkXmlFileStructure($baseFilePath,$checkFilePath){   
      
   if(!file_exists($baseFilePath)){ return false; }   
   $base = simplexml_load_file($baseFilePath);   
   if($base===false){ return false; }   
   
      
   if(!file_exists($checkFilePath)){ return false; }   
   $check = simplexml_load_file($checkFilePath);   
   if($check===false){ return false; }   
   
      
   if($base->getName() != $check->getName()){ return false; }   
   
      
   return checkXmlStructure($base,$check);   
}   
   
   
function checkXmlStructure($base,$check){   
      
   foreach ($base->attributes() as $name => $baseAttr){   
          
       if(!isset($check->attributes()->$name)){ return false; }   
   }   
   
      
   if(count($base->children())==0){   
       return (count($check->children())==0);   
   }   
   
      
   $checkChilds = array();   
   foreach($check->children() as $name => $child){   
       $checkChilds[$name][] = $child;   
   }   
   
      
   $checked = array();   
   foreach($base->children() as $name => $baseChild){   
          
       if(in_array($name, $checked)){ continue; }   
       $checked[] = $name;   
   
          
       if(emptyempty($checkChilds[$name])){ return false; }   
   
       foreach ($checkChilds[$name] as $child){   
              
           if( !checkXmlStructure($baseChild, $child) ){ return false; }   
       }   
   }   
   
   return true;   
}   
   
   
   
   
if(isset($_SERVER['argv'])){   
   parse_str(preg_replace('/&[-]+/','&',join('&',$_SERVER['argv'])), $_GET);   
   
   if(emptyempty($_GET['base_file']) || emptyempty($_GET['check_file'])){   
       echo "Run: ".basename(__FILE__)." base_file=base.xml check_file=check.xmln"; exit(1);   
   }   
   
   exit( checkXmlFileStructure($_GET['base_file'],$_GET['check_file']) ? 0 : 1);   
   
}else{   
   if(emptyempty($_GET['base_file']) || emptyempty($_GET['check_file'])){   
       echo "Run: ".basename(__FILE__)."?base_file=base.xml&check_file=check.xml
"; exit;   
   }   
   
   echo( checkXmlFileStructure($_GET['base_file'],$_GET['check_file']) ? '1' : '0');   
}  

使用方式(shell)
复制代码 代码如下:
php check_xml_file_structure.php base_file=base.xml check_file=check.xml   
   
if [ "j$?" != "j0" ]; then   
   echo "Run Error"   
fi 

测试范例 1
base_1.xml
复制代码 代码如下:
   
   
      
       Category文字   
       Title文字   
  
   
 
check_1.xml
 
   
   
      
       Category文字   
       Title文字   
  
   
      
       Category文字   
       Title文字   
       Description文字   
  
   
  

测试范例 2
base_2.xml
复制代码 代码如下:
   
   
      
  
check_2.xml
   
   
      
      
      

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/46484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号