使用PHP在子文件夹中创建和保存XML

时间:2013-12-25 20:07:30

标签: php xml

我正在使用PHP使用以下语法创建和保存xml文件:

$xml->save("source1.xml") or die("Error");

它工作正常,直到我意识到我有超过300个来源。在我的文件夹中的含义,例如工作文件;我的css和php文件我将额外的300 ++ xml文件与我的主要工作文件混合在一起。最重要的是,我没有硬编码“source1.xml”,而是根据所选源动态创建动态,并动态创建xml文件,例如,所选源是“source189.xml”并且该特定文件不存在。

所以我在为xml doc添加节点和子节点之前添加了这个:

$path = 'xml_'.$level.'_syll/';
$filename = $src.'.xml';
$file = $path.$filename;

有了这个,我用这个保存我的xml:

$xml->save($file) or die("Error");

并收到此错误:

Warning: DOMDocument::save() [domdocument.save]: Unable to access xml_data_syll/source3.xml in file.php on line 85

Warning: DOMDocument::save(xml_data_syll/source3.xml) [domdocument.save]: failed to open stream: No such file or directory in file.php on line 85
Error

所以我猜这与许可有关。我用Google搜索并找到了使用chmod授予权限的解决方案。那么如何在文件保存期间插入chmod?

我试过了: $ xml-> save($ file(chmod($ file,0777)))或die(“Error”);

我得到的错误是:

Fatal error: Call to undefined function xml_data_syll/source3.xml() in file.php on line 86

非常感谢任何指针。

1 个答案:

答案 0 :(得分:2)

DOMDocument::save()如果不存在,则不会创建中间目录。因此,在调用save()

之前,您需要检查目录是否存在并创建它
if (!is_dir($path)) {
    mkdir($path, 0700);
}

在此之后,您可以拨打$xml->save($file)