我正在研究 PostgreSQL 到 XML 的转换器。哪个应该提取不同表的值。相关代码如下:
$xml = new XMLWriter();
$xml->openMemory();
$xml->setIndent(true);
$xml->startDocument();
$query = new data_DataBaseQuery();
$xml->startElement();
.......
$xml->endElement();
如果我使用 echo htmlentities($xml->outputMemory());
我会得到我想要的输出。
但是我想让导出的文件可以用特定的名称下载。
此时你能帮我吗?
$xml->openURI('test.xml');
...
$xml->flush();
不知何故不起作用。它只会将我带到一个带有输出的空白页面。但是如果这是正确的方法,有人可以向我解释一下吗?
提前致谢
最佳答案
如果您想即时创建提供下载的 XML 文档,它是发送正确的 HTTP 响应 header 和使 XMLWriter 写入标准输出的组合:
header('Content-type: text/xml');
$writer = new XMLWriter();
$writer->openURI('php://output');
$writer->setIndent(true);
$writer->startDocument();
$query = new DataBaseQuery();
$writer->startElement();
# ...
$writer->endElement();
# ...
$writer->endDocument();
$writer->flush();
这应该使浏览器显示 XML 文件 - 这样您就可以轻松验证创建 XML 是否有效。
要使其提供下载对话框,您必须指定额外的第二个 header :
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename=example.xml');
# ...
引用资料:
关于php - XML 编写器 XML 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32068260/