Home >Backend Development >PHP Tutorial > PHP遍历指定文件夹内的XML资料,100分啊100分

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

WBOY
WBOYOriginal
2016-06-13 12:54:26801browse

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
懒得写了……
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn