php xmlwriter - 可以使用 resource/file 指针而不是路径吗?

php xmlwriter - possible to take a resource/file pointer instead of path?

而不是

$path_out = 'output.xml';

$xw = new XMLWriter();
$xw->openURI($path_out);

是否可以使用另一种方法或任何其他方式来做类似的事情:

$path_out = 'output.xml';
$fp = open($path_out, 'w');

$xw = new XMLWriter();
$xw->openURI($fp);

不,这确实很糟糕。 XMLWriter/XMLReader 组合应该运行 'streaming' 这很棒,但是它们不能与已经打开的流一起工作。这似乎是一个重大疏忽。

有点晚了,但这应该是可能的,因为提供的 uri 支持自定义协议。因此,如果您创建一个包装资源的自定义包装器,您应该能够直接写入包装的资源。

我创建了一个小型库,因为我遇到了同样的问题,你可以找到 here

因此,对于您的示例,您可以这样做:

$fd = fopen('output.xml', 'w');
StreamWrapper::register($fd, 'output.xml');
$writer = new \XMLWriter();
$writer->openUri('wrapper://output.xml');