中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在PHP中使用SimpleXML對XML文件的結構進行檢查

發布時間:2020-12-18 16:07:38 來源:億速云 閱讀:118 作者:Leah 欄目:開發技術

本篇文章為大家展示了如何在PHP中使用SimpleXML對XML文件的結構進行檢查,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

利用 SimpleXML 去檢查 XML 結構是否符合規格,為了讓這個程序可以多用途,采用了一個基準文件的作為結構準則,依據里面定義的節點跟屬性,去檢查文件是否符合基本要求的格式。

復制代碼 代碼如下:


<?php   
   
/**檢查 XML 文件結構  
* @param string $baseFilePath 基準結構文件  
* @param string $checkFilePath 待檢查文件  
* @return bool 當結構與基準文件相符合時則傳遞 true,否則是 false  
* */   
function checkXmlFileStructure($baseFilePath,$checkFilePath){   
   /*開啟 Base File*/   
   if(!file_exists($baseFilePath)){ return false; }   
   $base = simplexml_load_file($baseFilePath);   
   if($base===false){ return false; }   
   
   /*開啟 Check File*/   
   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);   
}   
   
/**檢查 XML 結構  
* @param SimpleXMLElement $base 基準結構對象  
* @param SimpleXMLElement $check 待檢查 XML 對象  
* @return bool 當結構與基準對象相符合時則傳遞 true,否則是 false  
* */   
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.xml\n"; 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<br />"; 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

復制代碼 代碼如下:


<?xml version="1.0" encoding="UTF-8"?>   
<items>   
   <item>   
       <Category>Category文字</Category>   
       <Title>Title文字</Title>   
   </item>   
</items> 
check_1.xml
 
<?xml version="1.0" encoding="UTF-8"?>   
<items>   
   <item>   
       <Category>Category文字</Category>   
       <Title>Title文字</Title>   
   </item>   
   <item>   
       <Category>Category文字</Category>   
       <Title>Title文字</Title>   
       <Description>Description文字</Description>   
   </item>   
</items>  


測試范例 2
base_2.xml

復制代碼 代碼如下:


<?xml version="1.0" encoding="UTF-8"?>   
<items>   
   <item category="Category文字" Title="Title文字"/>   
</items>  
check_2.xml
<?xml version="1.0" encoding="UTF-8"?>   
<items>   
   <item category="Category文字" Title="Title文字" Description="Description文字" />   
   <item category="Category文字" Title="Title文字" />   
   <item category="Category文字" Title="Title文字" Description="Description文字" />   
</items>

上述內容就是如何在PHP中使用SimpleXML對XML文件的結構進行檢查,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

叙永县| 中超| 闻喜县| 天门市| 贵德县| 泌阳县| 报价| 八宿县| 台北县| 永登县| 邳州市| 大洼县| 武邑县| 石泉县| 诸暨市| 岢岚县| 建水县| 陈巴尔虎旗| 扬州市| 敦煌市| 绥芬河市| 钦州市| 兰坪| 平遥县| 绥棱县| 会昌县| 潮安县| 贡觉县| 盈江县| 定兴县| 抚松县| 曲阜市| 瓮安县| 老河口市| 沈丘县| 阳山县| 连城县| 阜平县| 昌江| 姚安县| 沭阳县|