国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP中使用SimpleXML檢查XML文件結(jié)構(gòu)實(shí)例

2020-03-22 17:48:13
字體:
供稿:網(wǎng)友
利用 SimpleXML 去檢查 XML 結(jié)構(gòu)是否符合規(guī)格,為了讓這個(gè)程序可以多用途,采用了一個(gè)基準(zhǔn)文件的作為結(jié)構(gòu)準(zhǔn)則,依據(jù)里面定義的節(jié)點(diǎn)跟屬性,去檢查文件是否符合基本要求的格式。復(fù)制代碼 代碼如下:
php

/**檢查 XML 文件結(jié)構(gòu)
* @param string $baseFilePath 基準(zhǔn)結(jié)構(gòu)文件
* @param string $checkFilePath 待檢查文件
* @return bool 當(dāng)結(jié)構(gòu)與基準(zhǔn)文件相符合時(shí)則傳遞 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; }

/*比較起始點(diǎn)的名稱*/
if($base- getName() != $check- getName()){ return false; }

/*比較結(jié)構(gòu)*/
return checkXmlStructure($base,$check);
}

/**檢查 XML 結(jié)構(gòu)
* @param SimpleXMLElement $base 基準(zhǔn)結(jié)構(gòu)對象
* @param SimpleXMLElement $check 待檢查 XML 對象
* @return bool 當(dāng)結(jié)構(gòu)與基準(zhǔn)對象相符合時(shí)則傳遞 true,否則是 false
* */
function checkXmlStructure($base,$check){
/*檢查屬性*/
foreach ($base- attributes() as $name = $baseAttr){
/*必要的屬性不存在*/
if(!isset($check- attributes()- $name)){ return false; }
}

/*當(dāng)沒有子節(jié)點(diǎn)時(shí),則檢查對象也不能有子節(jié)點(diǎn)*/
if(count($base- children())==0){
return (count($check- children())==0);
}

/*將檢查對象的子節(jié)點(diǎn)分群*/
$checkChilds = array();
foreach($check- children() as $name = $child){
$checkChilds[$name][] = $child;
}

/*檢查子節(jié)點(diǎn)*/
$checked = array();
foreach($base- children() as $name = $baseChild){
/*跳過已經(jīng)檢查的子節(jié)點(diǎn)*/
if(in_array($name, $checked)){ continue; }
$checked[] = $name;

/*檢查必要的子節(jié)點(diǎn)是否存在*/
if(emptyempty($checkChilds[$name])){ return false; }

foreach ($checkChilds[$name] as $child){
/*遞回檢查子節(jié)點(diǎn)*/
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)
復(fù)制代碼 代碼如下:
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
復(fù)制代碼 代碼如下:
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
復(fù)制代碼 代碼如下:
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教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 修文县| 平潭县| 万荣县| 台安县| 东乌| 余庆县| 南通市| 凤城市| 西乡县| 高碑店市| 同江市| 汕头市| 项城市| 商水县| 兰考县| 岳阳市| 夏津县| 太谷县| 定日县| 西峡县| 庆阳市| 海南省| 灵璧县| 仪征市| 晋江市| 云阳县| 文水县| 镇沅| 诏安县| 喀喇| 汉沽区| 手游| 云阳县| 冀州市| 罗田县| 修水县| 永平县| 黄浦区| 施甸县| 恩平市| 肇源县|