使用 php 创建一个临时 xml 文件

Posted

技术标签:

【中文标题】使用 php 创建一个临时 xml 文件【英文标题】:Creating a temporary xml file with php 【发布时间】:2013-01-16 14:13:35 【问题描述】:

我正在尝试使用 php 创建一个包含测验问题列表的临时 xml 文件。随机列表是从 php 中的数据库生成的,我需要将其保存为可写的临时 xml 文件,直到测验完成。我不断收到以下错误:

警告:simplexml_load_file() [function.simplexml-load-file]:/tmp/quiz7YRGPo:1:解析器错误:需要开始标记,在 /home/dir/public_html/website.com/quiz 中找不到“

警告:simplexml_load_file() [function.simplexml-load-file]: quiz_data.xml in /home/dir/public_html/website.com/quiz/index.php 位于第 154 行

警告:simplexml_load_file() [function.simplexml-load-file]: ^ in /home/dir/public_html/website.com/quiz/index.php 第 154 行

这是代码:

// name of XMLPHP file which contains quiz data

$xml_file = 'http://website.com/quiz/dynamic_php_page_generates_xml.php?param=var&param2=var2';


// create randomXML file

$tempquiz = tempnam('/tmp','quiz');
$fp_tempquiz = fopen($tempquiz, "w");
fwrite($fp_tempquiz, $xml_file);
//CLOSE temp file
fclose($fp_tempquiz);

// create new SimpleXML object from XML file

$quiz = simplexml_load_file($tempquiz);

如何使用 php 创建临时 xml 文件,以便每次加载页面时测验都是唯一的?

【问题讨论】:

【参考方案1】:

$xml_file 包含文件的 URL,而不是实际的 XML 内容。您应该先阅读它,使用file_get_contents 函数,例如:

$xml_content = file_get_contents($xml_file);
fwrite($fp_tempquiz, $xml_content);

【讨论】:

【参考方案2】:

据我所知,您只是将其写入您的 XML 文件:

http://website.com/quiz/dynamic_php_page_generates_xml.php?param=var&param2=var2

因为fwrite($fp_tempquiz, $xml_file); 不知道这是您要加载的链接。您需要加载 XML 数据,而不是指向它的链接。

请参考此帖:XML Parser Error Start Tag Expected

【讨论】:

【参考方案3】:

应该是

$xml_file = file_get_contents('http://website.com/quiz/dynamic_php_page_generates_xml.php?param=var&param2=var2');

【讨论】:

以上是关于使用 php 创建一个临时 xml 文件的主要内容,如果未能解决你的问题,请参考以下文章

上传时无法创建临时文件

在PHP中操作临时文件

ASIHttpRequest-移动到实时PHP服务器后未创建临时文件

在tomcat上保存临时文件的最佳实践? [复制]

PhpSpreadsheet:权限 | ZipArchive::close(): 创建临时文件失败

临时表的问题