我正在研究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();
以某种方式不起作用。它只引导我输出一个空页面。但如果这是正确的方法,有人可以解释一下吗?
提前谢谢
答案 0 :(得分:3)
如果您想动态创建XML文档,那么它就是发送正确的HTTP响应标头并使 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('Content-type: text/xml');
header('Content-Disposition: attachment; filename=example.xml');
# ...
参考文献:
答案 1 :(得分:1)
您可以使用openURI()
方法输出文件中的内容。之后,您将能够下载它。使用它而不是openMemory()
。
$xml = new XMLWriter();
$xml->openURI("test.xml");
$xml->setIndent(true);
$xml->startDocument();
$query = new data_DataBaseQuery();
$xml->startElement();
.......
$xml->endElement();
$xml->flush();