PHP Conference Nagoya 2025

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): XMLReader
public XMLReader::open(string $uri, ?string $encoding = null, int $flags = 0): bool

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

  • Passer une valeur invalide pour le encoding entraînera une exception ValueError.
  • Cette méthode peut être appelée statiquement, mais, antérieur à PHP 8.0.0, cela génèrera une erreur E_DEPRECATED dans ce cas.

Historique

Version Description
8.4.0 Passer une valeur invalide pour le encoding déclenchera désormais une exception ValueError.
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

User Contributed Notes 5 notes

up
10
den at nurfuerspam dot de
7 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
9
dave at sophoservices dot com
8 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
3
alvaro at demogracia dot com
10 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
0
crungmungus at gmail dot com
16 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
-3
mood(_a_)twolate.com
8 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