ConFoo Montreal 2017 Calling for Papers

XMLWriter->openURI

xmlwriter_open_uri

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

XMLWriter->openURI -- xmlwriter_open_uriErzeugt neuen XMLWriter, der URI für Ausgabe verwendet

Beschreibung

Objektorientierter Stil

bool XMLWriter::openURI ( string $uri )

Prozeduraler Stil

resource xmlwriter_open_uri ( string $uri )

Erzeugt einen neuen XMLWriter, der ein uri zum Erzeugen verwendet.

Parameter-Liste

uri

Der Ressource-URI, der zur Ausgabe verwendet wird.

Rückgabewerte

Objektorientierter Stil: Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben..

Prozeduraler Stil: Gibt eine neue XMLWriter Ressource zurück, die bei Erfolg für die späteren Funktionsaufrufe verwendet werden kann. Im Fehlerfall wird FALSE zurückgegeben.

Siehe auch

add a note add a note

User Contributed Notes 4 notes

up
7
Lukas Knuth
5 years ago
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!
up
3
yankee at ignorethis dot cipher DASH code dot de
8 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
7 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.
up
1
tloeffler
11 months 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!
To Top