SimpleXML を使用して PHP で XML ファイル構造をチェックする例、simplexmlxml
XML 構造が仕様を満たしているかどうかを確認するために SimpleXML を使用する このプログラムを多目的にするために、ベンチマーク ファイルを構造基準として使用し、その中で定義されているノードと属性に基づいて、ファイルが仕様を満たしているかどうかを確認します。基本的に必要な形式。
コードをコピーします コードは次のとおりです:
/**XML ファイル構造を確認する
* @param string $baseFilePath 基本構造ファイル
* @param string $checkFilePath チェック対象のファイル
* @return bool 構造がベンチマークファイルと一致する場合は true を渡し、そうでない場合は false を返します
**/
関数 checkXmlFileStructure($baseFilePath,$checkFilePath){
/*ベースファイルを開く*/
If(!file_exists($baseFilePath)){ return false }
$base = simplexml_load_file($baseFilePath);
If($base===false){ false を返す }
/*チェックファイルを開く*/
If(!file_exists($checkFilePath)){ return false }
$check = simplexml_load_file($checkFilePath);
If($check===false){ false を返す }
/*比較開始点の名前*/
If($base->getName() != $check->getName()){ return false }
/*比較構造*/
checkXmlStructure($base,$check) を返します
}
/**XML構造を確認する
* @param SimpleXMLElement $base 基本構造オブジェクト
* @param SimpleXMLElement $check チェック対象の XML オブジェクト
* @return bool 構造体が基本オブジェクトと一致する場合は true が渡され、そうでない場合は false
**/
関数 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 = 配列();
foreach($check->children() as $name => $child){
$checkChilds[$name][] = $child;
}
/*子ノードをチェック*/
$checked = 配列();
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 }
}
true を返します。
}
/*=============================================== ==============================*/
if(isset($_SERVER['argv'])){
Parse_str(preg_replace('/&[-]+/','&',join('&',$_SERVER['argv'])), $_GET);
If(emptyempty($_GET['base_file']) || emptyempty($_GET['check_file'])){
echo "実行: ".basename(__FILE__)"base_file=base.xml check_file=check.xmln";
}
exit( checkXmlFileStructure($_GET['base_file'],$_GET['check_file']) ? 0 : 1);
}その他{
If(emptyempty($_GET['base_file']) || emptyempty($_GET['check_file'])){
echo "実行: ".basename(__FILE__)"?base_file=base.xml&check_file=check.xml
";
}
echo( checkXmlFileStructure($_GET['base_file'],$_GET['check_file']) ? '1' : '0');
}
使い方(シェル)
コードをコピーします
コードは次のとおりです:
php check_xml_file_ Structure.phpbase_file=base.xml check_file=check.xml
if [ "j$?" != "j0" ];
「実行エラー」をエコーする
はい
テスト例1
base_1.xml
コードをコピーします コードは次のとおりです:
アイテム>
アイテム>
check_1.xml
アイテム>
アイテム>
アイテム>
テスト例2
base_2.xml
コードをコピーします
コードは次のとおりです:
アイテム>
check_2.xml
アイテム>
http://www.bkjia.com/PHPjc/939421.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/939421.html
技術記事
PHP で XML ファイルの構造を確認するために SimpleXML を使用する例。 simplexmlxml は、XML 構造が仕様を満たしているかどうかを確認するために、このプログラムを多目的にするためにベンチマークを採用しています。