Heim  >  Artikel  >  Backend-Entwicklung  >  PHP遍历指定文件夹内的XML文件,100分啊,100分。

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

WBOY
WBOYOriginal
2016-06-23 14:03:561095Durchsuche

XML文件格式为:

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

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

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

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


回复讨论(解决方案)

看到那个头像脑子一下子清零了……微臣告退……

看到那个头像脑子一下子清零了……微臣告退……

帮我解决下,马上就还头像。

$doc = new DOMDocument();$doc->load ("a.xml");$tmp =  $doc->getElementsByTagName('template');foreach($tmp as $t){	Echo 'title:'.$t->getElementsByTagName('title')->item(0)->nodeValue."<br>";	Echo 'image:'.$t->getElementsByTagName('image')->item(0)->nodeValue."<br>";	Echo 'intro:'.$t->getElementsByTagName('intro')->item(0)->nodeValue."<br>";	Echo 'mediapath:'.$t->getElementsByTagName('mediapath')->item(0)->nodeValue."<br>";}

翻手册,opendir遍历,DOMDocument解析XML

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


读取$filename 的部分参考 http://bbs.csdn.net/topics/390354196
懒得写了

呃,居然写了双等号……

$dir='D:\001\1003';function readxml($dir,&$arr){	if($handle=opendir($dir)){		while(false!==($file=readdir($handle))){			$sub_dir=$dir.DIRECTORY_SEPARATOR.$file;			if(is_dir($sub_dir)&&$file!='.'&&$file!='..'){				readxml($sub_dir,$arr);			}elseif(preg_match('/\.xml$/',$file)){				if(count($arr)>3){					return false;				}				$arr[]=$sub_dir;			}		}	}}readxml($dir,$arr);foreach($arr as $x){	$doc = new DOMDocument();	$doc->load ($x);	$tmp =  $doc->getElementsByTagName('template');	foreach($tmp as $t){		Echo 'title:'.$t->getElementsByTagName('title')->item(0)->nodeValue."<br>";		Echo 'image:'.$t->getElementsByTagName('image')->item(0)->nodeValue."<br>";		Echo 'intro:'.$t->getElementsByTagName('intro')->item(0)->nodeValue."<br>";		Echo 'mediapath:'.$t->getElementsByTagName('mediapath')->item(0)->nodeValue."<br>";	}	Echo "<p>--------------------------------------</p>";}

给分来!!!!

还真是清零了,晕
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
懒得写了……

PHP code?1234567891011121314151617181920212223242526272829$dir='D:\001\1003';function readxml($dir,&$arr){    if($handle=opendir($dir)){        while(false!==($file=readdir($handle)))……
谢谢了兄弟,有空聊来这给这段代码加几句注释,我好学习,呵呵。

这里也有一个PHP遍历文件夹的函数
你可以参考一下: http://www.bacysoft.cn/thread-77-1-1.html

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn