XMLReader::open

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

XMLReader::openSet the URI containing the XML to parse

Descrição

public static XMLReader::open ( string $uri , string|null $encoding = null , int $flags = 0 ) : bool|XMLReader

Set the URI containing the XML document to be parsed.

Parâmetros

uri

URI pointing to the document.

encoding

The document encoding or null.

flags

A bitmask of the LIBXML_* constants.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha. If called statically, returns an XMLReader ou false em caso de falha.

Erros

This method may be called statically, but prior to PHP 8.0.0, will issue an E_DEPRECATED error in this case.

Changelog

Versão Descrição
8.0.0 XMLReader::open() is now declared as static method, but can still be called on an XMLReader instance.

Veja Também

add a note add a note

User Contributed Notes 5 notes

up
9
den at nurfuerspam dot de
6 years ago
If you like 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/get.php?get_param=value3');

?>
up
5
alvaro at demogracia dot com
9 years ago
XML can optionally declare its own encoding:

    <?xml version="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 works).
up
6
dave at sophoservices dot com
7 years ago
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 get:

PHP Warning:  XMLReader::open(): Unable to open source data in ...
up
1
crungmungus at gmail dot com
15 years ago
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.
up
-2
mood(_a_)twolate.com
7 years ago
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 make sense as the xml file target hosted on my server is perfectly reachable. Adding this line before invoking open() fixed it :

libxml_disable_entity_loader(false);

Please view https://bugs.php.net/bug.php?id=62577
It is somehow related.
To Top