PHP Velho Oeste 2024

XMLWriter::openUri

xmlwriter_open_uri

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::openUri -- xmlwriter_open_uriソース URI を指定して新しい xmlwriter を作成する

説明

オブジェクト指向型

XMLWriter::openUri ( string $uri ) : bool

手続き型

xmlwriter_open_uri ( string $uri ) : resource

uri を指定した新しい XMLWriter を作成します。

パラメータ

uri

出力するリソースの URI。

返り値

オブジェクト指向型: 成功した場合に TRUE を、失敗した場合に FALSE を返します。

手続き型: 成功した場合に、その後の xmlwriter 関数で使用するための新しい xmlwriter リソース、 エラーの場合に FALSE を返します。

例1 XML を直接出力する

php://output ストリームラッパー を使えば、直接XMLを出力することが出来ます。

<?php
$out 
=new XMLWriter();
$out->openURI('php://output');
?>

注意

注意:

Windows では、この関数を使って開いたファイルは writer が解放されるまでロックされます。

参考

add a note add a note

User Contributed Notes 3 notes

up
3
tloeffler
8 years ago
Reproduced on Windows:

If you get an exception when you try to handle the created file (rename, move etc.) you should unset the XMLWriter instance.

In other case you'll get an exception because the XMLWriter process holds access to this file.

<?php
$xml
= new \XMLWriter();
$xml->openUri(...)
...
$xml->flush();

unset(
$xml); //important!
up
3
yankee at ignorethis dot cipher DASH code dot de
16 years ago
Want to write xml-data directly to the user instead of memory or file?
This will do:
<?php
$out
=new XMLWriter();
$out->openURI('php://output');
?>
up
1
icepick dot pt at hotmail dot com
15 years ago
I wanted to stream a XML file directly to the user and having him prompted to save it without displaying the content, but when using

<?php
$out
=new XMLWriter();
$out->openURI('php://output');
?>

the user's browser was displaying the file contents instead of prompting the user with a filesave window.

To have the XML file stream saved directly to the user without being displayed by the browser, you shoud add:

<?php
header
("Content-Type: text/html/force-download");
header("Content-Disposition: attachment; filename='file_name.xml'");
$out =new XMLWriter();
$out->openURI('php://output');
?>

This will prompt the user with a dialog box to save 'file_name.xml' on his disk, and will not display the content of the streamed XML.
To Top