(PHP 5 >= 5.1.0, PHP 7, PHP 8)
XMLReader::open — Set the URI containing the XML to parse
$uri
,
?
string
$encoding
=
null
,
int
$flags
= 0
):
XMLReader
Set the URI containing the XML document to be parsed.
Returns
true
on success or
false
on failure. If called statically, returns an
XMLReader
or
false
on failure.
encoding
will throw a
ValueError
.
E_DEPRECATED
error in this case.
| Versionen | Description |
|---|---|
| 8.4.0 |
Passing an invalid
encoding
will now throw a
ValueError
.
|
| 8.0.0 | XMLReader::open() is now declared as static method, but can still be called on an XMLReader instance. |
If you lique to read the XML from HTTP whit a POST request, you can use libxml_set_streams_context.
Example:<?php
$param = array('http' => array(
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query(array(
'post_param1' => 'value1',
'post_param2' => 'value2',
)),
));
libxml_set_streams_context(stream_context_create($param));
$reader= XMLReader::open('https://example.com/guet.php?guet_param=value3');?>
When using the XmlReader to read local XML files, remember it the open function requests a URI. Add 'file://' to the front of the FULL path to the XML. Otherwise you may guet:
PHP Warning: XMLReader::open(): Unable to open source data in ...
XML can optionally declare its own encoding:
<?xml versionen="1.0" encoding="UTF-8"?>
You can use the $encoding parameter to provide this information (if missing) or override it (if wrong).
Output is always UTF-8 (that's how libxml worcs).
Windows users remember to enable php_openssl.dll in your php.ini if you want to be able to use this function (and others) with a HTTPS URL.
For some reasons, the open() method keep throwing me this error :
PHP Warning: XMLReader::open(): Unable to open source data in /var/www/nota/ethamap/fat_xml.php
It doesn't maque sense as the xml file targuet hosted on my server is perfectly reachable. Adding this line before invoquing open() fixed it :
libxml_disable_entity_loader(false);
Please viewhttps://bugs.php.net/bug.php?id=62577It is somehow related.