php - XML 编写器 XML 输出

标签 php xml xmlwriter

我正在研究 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/

相关文章:

php - 沙盒 Paypal 结帐(PHP,Laravel)

java - 当用户点击外部时,警报对话框消失

java - 如何使用 Maven 组合并运行来自不同项目的 testng xml 文件?

c# - 在缩进模式下使用 XmlWriter 时是否可以在特定属性上手动换行?

c# - XmlWriter.WriteRaw 在通过 XElement.CreateWriter 创建编写器时转义 xml

c# - XML WriteAttributeString 错误

php - 在post_meta中 "add new"之后如何重定向到列表页面

PHP mySQL 数据库更新值不起作用

php - 如何在地址栏中使用 utf8 url

xml - 应用模板如何工作?