PHP 8.6.0 Beta 1 is available for testing

XMLReader::open

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

XMLReader::openУстанавливает URI, который содержит XML-документ для разбора

Описание

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

Метод устанавливает URI-идентификатор, который содержится в XML-документе для разбора.

Список параметров

uri

URI-идентификатор, который указывает на документ.

encoding

Кодировка документа или null .

flags

Битовая маска, которая состоит из констант семейства LIBXML_*.

Возвращаемые значения

Функция возвращает true , если выполнилась успешно, или false , если возникла ошибка. При статическом вызове метод возвращает экземпляр класса XMLReader или false , если возникла ошибка.

Ошибки

  • При передаче недопустимой кодировки в аргументе encoding метод выбросит ошибку ValueError .
  • Метод поддерживает статический вызов, но до PHP 8.0.0 при таком вызове выдаётся ошибка уровня E_DEPRECATED .

Список изменений

Версия Описание
8.4.0 При передаче недопустимой кодировки в аргументе encoding метод выбросит ошибку ValueError .
8.0.0 Метод XMLReader::open() объявили статическим, но его по-прежнему разрешается вызывать на экземпляре класса XMLReader .

Смотрите также

  • XMLReader::XML() - Устанавливает XML-данные для разбора
  • XMLReader::close() - Закрывает входные данные экземпляра класса XMLReader

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 5 notes

up
9
den at nurfuerspam dot de
9 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
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 get:
PHP Warning: XMLReader::open(): Unable to open source data in ...
up
4
alvaro at demogracia dot com
11 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
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.
up
-3
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 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.
+Добавить

AltStyle によって変換されたページ (->オリジナル) /