simplexml_load_file()上的错误消息

时间:2012-09-28 19:25:44

标签: php

我是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

所以我不确定问题是什么。再次感谢!

2 个答案:

答案 0 :(得分:1)

问题是我需要在simplexml_load_file($ xmlFile)方法中定义FULL PATH。我只是不得不继续寻找。

对不起。

非常感谢。

答案 1 :(得分:0)

编辑您的php.ini文件,可能会停用此方法。记住simplexml_load_file()只适用于PHP 5.