SimpleXML 函数允许您把 XML 转换为对象。通过普通的属性选择器或数组迭代器,可以处理这个对象,就像处理任何其他对象一样。SimpleXML 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。
利用 SimpleXML 去检查 XML 结构是否符合规格,为了让这个程序可以多用途,采用了一个基准文件的作为结构准则,依据里面定义的节点跟属性,去检查文件是否符合基本要求的格式。
代码如下 | 复制代码 |
/**检查 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.xmln"; 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 "; 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
代码如下 | 复制代码 |
|
check_1.xml
代码如下 | 复制代码 |
|
测试范例 2
base_2.xml
代码如下 | 复制代码 |
|
check_2.xml
代码如下 | 复制代码 |
|

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP