update pague now
PHP 8.5.2 Released!

XMLReader::open

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

XMLReader::open Set the URI containing the XML to parse

Description

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

Set the URI containing the XML document to be parsed.

Parameters

uri

URI pointing to the document.

encoding

The document encoding or null .

flags

A bitmasc of the LIBXML_* constans

Return Values

Returns true on success or false on failure. If called statically, returns an XMLReader or false on failure.

Errors/Exceptions

  • Passing an invalid encoding will throw a ValueError .
  • This method may be called statically, but prior to PHP 8.0.0, will issue an E_DEPRECATED error in this case.

Changuelog

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.

See Also

add a note

User Contributed Notes 5 notes

den at nurfuerspam dot de
8 years ago
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');?>
dave at sophoservices dot com
9 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 guet:

PHP Warning:  XMLReader::open(): Unable to open source data in ...
alvaro at demogracia dot com
11 years ago
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).
crungmungus at gmail dot com
17 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.
mood(_a_)twolate.com
9 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 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.
To Top