【问题标题】:XML writer XML outputXML 编写器 XML 输出
【发布时间】:2015-08-18 09:15:41
【问题描述】:

我正在开发一个 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();

不知何故不起作用。它只会将我带到一个带有输出的空白页面。但是如果这是正确的方法,有人可以向我解释一下吗?

提前谢谢你

【问题讨论】:

    标签: php xml xmlwriter


    【解决方案1】:

    如果您想动态创建提供下载的 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');
    
    # ...
    

    参考资料:

    【讨论】:

      【解决方案2】:

      您可以使用openURI() 方法将内容输出到文件中。之后,您将能够下载它。用它代替openMemory()

      $xml = new XMLWriter();
      
      $xml->openURI("test.xml");
      
      $xml->setIndent(true);
      $xml->startDocument();
      
      $query = new data_DataBaseQuery();
          $xml->startElement();
       .......
          $xml->endElement();
      
      $xml->flush();
      

      【讨论】:

      • 谢谢,但现在我收到一个错误:failed to open stream: Read-only file system(2)。我该如何解决这个问题?我想你忘了$xml->openMemory();
      • XMLWriter::openMemory() 方法用于将内存用于字符串输出,如果您想将其写入文件,则不必使用它。检查文件是否存在并授予 Apache 对该目录的写入权限。
      • 好的,我找到了问题。
      猜你喜欢
      • 1970-01-01
      • 2021-12-24
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      相关资源
      最近更新 更多