XMLReader::open

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

XMLReader::openFixe le URI contenant le XML à analyser

Description

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

Fixe le URI contenant le document XML à être analysé.

Liste de paramètres

uri

URI pointant vers le document.

encoding

L'encodage du document, ou null.

flags

Un masque de constante LIBXML_*.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient. Si appelée statiquement, retourne un objet XMLReader ou false si une erreur survient.

Erreurs / Exceptions

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

Historique

Version Description
8.0.0 XMLReader::open() est désormais déclaré comme méthode statique, mais peut toujours être appelé sur une instance de XMLReader.

Voir aussi

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