SimpleXML 函数允许您把 XML 转换为对象。通过普通的属性选择器或数组迭代器,可以处理这个对象,就像处理任何其他对象一样。SimpleXML 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。
<script>ec(2);</script>
利用 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
代码如下 | 复制代码 |
|
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사
Windows 11 KB5054979의 새로운 기능 및 업데이트 문제를 해결하는 방법
3 몇 주 전ByDDD
KB5055523을 수정하는 방법 Windows 11에 설치되지 않습니까?
2 몇 주 전ByDDD
Inzoi : 학교 및 대학에 지원하는 방법
3 몇 주 전ByDDD
KB5055518을 수정하는 방법 Windows 10에 설치되지 않습니까?
2 몇 주 전ByDDD
Roblox : Dead Rails - Nikola Tesla를 소환하고 패배하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
