0

我是 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 警告:无法在第 47 行的 /Users/msavoy/Sites/TestScripts/xmlFileLoader.php 中加载外部实体“sfly-6x8.000020513524-7001536_28935-tb.33.xml”

警告: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

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

4

2 回答 2

1

问题是我需要在 simplexml_load_file($xmlFile) 方法中定义完整路径。我只好继续寻找。

对不起。

不管怎么说,还是要谢谢你。

于 2012-09-28T19:57:57.987 回答
0

编辑你的 php.ini 文件,可能这个方法被禁用了。记住 simplexml_load_file() 只在 PHP 5 中工作。

于 2012-09-28T19:33:11.430 回答