>백엔드 개발 >PHP 튜토리얼 > PHP遍历指定文件夹内的XML资料,100分啊100分

PHP遍历指定文件夹内的XML资料,100分啊100分

WBOY
WBOY원래의
2016-06-13 12:54:26809검색

PHP遍历指定文件夹内的XML文件,100分啊,100分。
XML文件格式为:

<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<template><br />
<title><![CDATA[《克鲁德一家》预告]]></title> <br />
  <image>130112001.jpg</image> <br />
  <intro><![CDATA[《克鲁德一家》预告]]></intro> <br />
  <mediapath>130112001.3gp</mediapath><br />
</template><br />

一个XML文件相当于一条数据。

由于我初学PHP不久,求翻译下面的代码。。。
<br />
<br />
指定文件夹目录路径:D:\001\1003(此文件夹下有多个XML文件)<br />
<br />
遍历开始(读取4个XML文件,满足后停止遍历)<br />
<br />
读取一个XML文件内容<br />
<br />
$title=XML内的title<br />
<br />
$img=XML内的image<br />
<br />
$path=此XML文件的路径<br />
<br />
把这3个变量输出到页面<br />
<br />
遍历结束<br />
<br />

等于读取了4条数据,每条数据包含title,img,path这3个变量的值。

php xml
------解决方案--------------------
翻手册,opendir遍历,DOMDocument解析XML
------解决方案--------------------
$i == 0<br />
foreach (glob("D:\\001\\1003\\*.xml") as $filename) {<br />
    if ($i >3) break;<br />
    读取$filename……<br />
    $i++;<br />
}


读取$filename 的部分参考 http://bbs.csdn.net/topics/390354196
懒得写了
------解决方案--------------------
<br />
$dir='D:\001\1003';<br />
function readxml($dir,&$arr){<br />
	if($handle=opendir($dir)){<br />
		while(false!==($file=readdir($handle))){<br />
			$sub_dir=$dir.DIRECTORY_SEPARATOR.$file;<br />
			if(is_dir($sub_dir)&&$file!='.'&&$file!='..'){<br />
				readxml($sub_dir,$arr);<br />
			}elseif(preg_match('/\.xml$/',$file)){<br />
				if(count($arr)>3){<br />
					return false;<br />
				}<br />
				$arr[]=$sub_dir;<br />
			}<br />
		}<br />
	}<br />
}<br />
readxml($dir,$arr);<br />
foreach($arr as $x){<br />
	$doc = new DOMDocument();<br />
	$doc->load ($x);<br />
	$tmp =  $doc->getElementsByTagName('template');<br />
	foreach($tmp as $t){<br />
		Echo 'title:'.$t->getElementsByTagName('title')->item(0)->nodeValue."<br>";<br />
		Echo 'image:'.$t->getElementsByTagName('image')->item(0)->nodeValue."<br>";<br />
		Echo 'intro:'.$t->getElementsByTagName('intro')->item(0)->nodeValue."<br>";<br />
		Echo 'mediapath:'.$t->getElementsByTagName('mediapath')->item(0)->nodeValue."<br>";<br />
	}<br />
	Echo "<p>--------------------------------------</p>";<br />
}<br />

给分来!!!!
------解决方案--------------------
还真是清零了,晕
foreach (glob("D:\\001\\1003\\*.xml") as $key => $filename)
用$key就可以判断读了四个停止遍历了,不需要$i

引用:
PHP code?123456$i == 0foreach (glob("D:\\001\\1003\\*.xml") as $filename) {    if ($i >3) break;    读取$filename……    $i++;}

读取$filename 的部分参考 http://bbs.csdn.net/topics/390354196
懒得写了……
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.