本篇文章为大家展示了如何在PHP中使用SimpleXML对XML文件的结构进行检查,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
利用SimpleXML去检查XML结构是否符合规格,为了让这个程序可以多用途,采用了一个基准文件的作为结构准则,依据里面定义的节点跟属性,去检查文件是否符合基本要求的格式。
代码如下:
& lt; ? php ,,
,,,
/* *检查XML文件结构,,
* @param字符串$ baseFilePath基准结构文件,,
* @param字符串$ checkFilePath待检查文件,,
* @return bool当结构与基准文件相符合时则传递,否则是false ,
* */,,,
函数checkXmlFileStructure (baseFilePath, checkFilePath美元){,,
,,*//*开启基本文件,,,
,,如果(! file_exists (baseFilePath美元)){返回false;},,,
,,美元基?simplexml_load_file (baseFilePath美元);,,,
,,如果($===false){返回false;},,,
,,,
,,/*开启检查文件*/,,,
,,如果(! file_exists (checkFilePath美元)){返回false;},,,
,,检查美元=simplexml_load_file (checkFilePath美元);,,,
,,如果($检查===false){返回false;},,,
,,,
,,/*比较起始点的名称*/,,,
,,如果(基地→美元getName() !=$检查→getName()){返回false;},,,
,,,
,,/*比较结构*/,,,
,,返回checkXmlStructure(基地,检查美元);,,,
},,,
,,,
/* *检查XML结构,,SimpleXMLElement $
* @param基地基准结构对象,,SimpleXMLElement $
* @param检查待检查XML对象,,
* @return bool当结构与基准对象相符合时则传递,否则是false ,
* */,,,
函数checkXmlStructure(基地,检查美元){,,
,,/*检查属性*/,,,
,,foreach($基地→属性()美元的名字=比;baseAttr美元){,,
,,,,,,/*必要的属性不存在*/,,,
,,,,,,如果(!收取(()美元检查→属性→美元名称)){返回false;},,,
,,},,,
,,,
,,/*当没有子节点时,则检查对象也不能有子节点*/,,,
,,如果(count($基地→孩子())==0){,,
,,,,,,返回(count($检查→孩子())==0),,,,
,,},,,
,,,
,,/*将检查对象的子节点分群*/,,,
,,数组$ checkChilds=();,,,
,,foreach($检查→孩子()美元的名字=比;孩子美元){,,
,,,,,,$ checkChilds[名字]美元[]=$孩子,,,,
,,},,,
,,,
,,/*检查子节点*/,,,
,,$=检查数组();,,,
,,foreach($基地→孩子()美元的名字=比;baseChild美元){,,
,,,,,,/*跳过已经检查的子节点*/,,,
,,,,,,如果(in_array(名称,检查美元)){继续;},,,
,,,,,,检查[]=美元名字,,,,
,,,
,,,,,,/*检查必要的子节点是否存在*/,,,
,,,,,,如果(emptyempty ($ checkChilds[名字]美元)){返回false;},,,
,,,
,,,,,,foreach ($ checkChilds[名字]美元美元){,,
,,,,,,,,,,/*递回检查子节点*/,,,
,,,,,,,,,,如果(! checkXmlStructure (baseChild,孩子美元)){返回false;},,,
,,,,,,},,,
,,},,,
,,,
,,返回true;,,,
},,,
,,,
,,,
/*==============================================================================*/,,,
,,,
如果(收取($ _SERVER [& # 39; argv # 39;])) {,,
,,parse_str (preg_replace(& # 39;/, \[-] +/& # 39;, & # 39;, & # 39;,加入(& # 39;,& # 39;,$ _SERVER [& # 39; argv # 39;])), $ _GET),,,,
,,,
,,如果(emptyempty ($ _GET [& # 39; base_file& # 39;]) | | emptyempty ($ _GET [& # 39; check_file& # 39;])) {,,
,,,,,,回声“跑:“.basename (__FILE__) !”base_file=基地。xml check_file=check.xml \ n";退出(1),,,,
,,},,,
,,,
,,null