ホームページ > バックエンド開発 > PHPチュートリアル > SimpleXML を使用して PHP で XML ファイル構造をチェックする例、simplexmlxml_PHP チュートリアル

SimpleXML を使用して PHP で XML ファイル構造をチェックする例、simplexmlxml_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:10:02
オリジナル
830 人が閲覧しました

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.comtru​​ehttp://www.bkjia.com/PHPjc/939421.html
技術記事

PHP で XML ファイルの構造を確認するために SimpleXML を使用する例。 simplexmlxml は、XML 構造が仕様を満たしているかどうかを確認するために、このプログラムを多目的にするためにベンチマークを採用しています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート