我是 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
所以我不确定问题是什么。再次感谢!