文字

XMLWriter::openURI

xmlwriter_open_uri

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

XMLWriter::openURI -- xmlwriter_open_uriCreate new xmlwriter using source uri for output

说明

面向对象风格

bool XMLWriter::openURI ( string $uri )

过程化风格

resource xmlwriter_open_uri ( string $uri )

Creates a new XMLWriter using uri for the output.

参数

uri

The URI of the resource for the output.

返回值

面向对象风格: 成功时返回 TRUE , 或者在失败时返回 FALSE

过程化风格: Returns a new xmlwriter 资源(resource) for later use with the xmlwriter functions on success, FALSE on error.

参见

  • XMLWriter::openMemory() - Create new xmlwriter using memory for string output

用户评论:

[#1] tloeffler [2015-09-10 06:08:57]

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!

[#2] Lukas Knuth [2011-05-07 09:08:01]

If you're facing problems on Windows Servers running PHP 5.3 and newer, where this function quits with an "Unable to resolve file path" Error, here is a Workaround which isn't posted on the Bug site yet:

Add this before you use the openURI()-function:

<?php
touch
($uri);
$uri realpath($uri);
?>


This Bug appears in the following cases:

$xml->openURI('file.xml'); -> ok!
$xml->openURI('../file.xml'); -> ok!
$xml->openURI('xml/file.xml'); -> DON'T WORK!
$xml->openURI('../xml/file.xml'); -> DON'T WORK!

[#3] icepick dot pt at hotmail dot com [2009-03-16 13:13:46]

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.

[#4] yankee at ignorethis dot cipher DASH code dot de [2007-11-19 10:46:01]

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');
?>

上一篇: 下一篇: