我是PHP函数的新手,并尝试使用simplexml_load_file()来读取终端中的xml文件,但是我的代码下面会出现错误。我不知道这是否有所不同,但我正在运行mac os x OS,Mountain Lion和xml文件位于我本地盒子的目录中。任何建议/方向将不胜感激。问候。
这是功能:
function xmlFileLoader($sourceDir) {
// Properties
$sourceXmlDir = scandir($sourceDir);
$count_xml_files = count($sourceXmlDir);
// Removes any directory or file other than XML file from the contents of the $sourceDir variable:
for( $i = 0; $i < $count_xml_files; $i++ ) {
$path_info = pathinfo( $sourceXmlDir[$i] );
if( preg_match( '/^\./', $sourceXmlDir[$i] ) || is_dir( $sourceXmlDir . '/' . $sourceXmlDir[$i] ) || ( strtoupper( $path_info['extension'] ) <> 'XML' ) )
{
unset( $sourceXmlDir[$i] );
}
}
// Get the correct count of the values in the $sourceXmlDir after the unset function completes
$sourceXmlArray = array_values($sourceXmlDir);
$count_xml_files = count($sourceXmlArray);
if ($count_xml_files > 0) {
// Cycle through the XML files in the $sourceXmlArray
foreach ($sourceXmlArray as $xmlFile) {
$sFile = simplexml_load_file($xmlFile);
print_r($sFile);
}
}
}
我在终端中收到的错误如下:
PHP警告:simplexml_load_file():I / O警告:无法在/Users/msavoy/Sites/TestScripts/xmlFileLoader.php中加载外部实体“sfly-6x8.000020513524-7001536_28935-tb.33.xml” 47
警告:simplexml_load_file():I / O警告:无法在第47行的/Users/msavoy/Sites/TestScripts/xmlFileLoader.php中加载外部实体“sfly-6x8.000020513524-7001536_28935-tb.33.xml”
当我在$ xmlFile上执行var_dump时,我得到了正确的文件名:sfly-6x8.000020513524-7001536_28935-tb.33.xml
所以我不确定问题是什么。再次感谢!
答案 0 :(得分:1)
问题是我需要在simplexml_load_file($ xmlFile)方法中定义FULL PATH。我只是不得不继续寻找。
对不起。
非常感谢。
答案 1 :(得分:0)
编辑您的php.ini文件,可能会停用此方法。记住simplexml_load_file()只适用于PHP 5.