XMLReader::open
(PHP 5 >= 5.1.0, PHP 7)
XMLReader::open — Установить URI, содержащий XML-документ для разбора
Описание
public
bool
XMLReader::open
( string
$URI
[, string $encoding
[, int $options
= 0
]] )Установить URI, содержащий XML-документ, который будет разобран.
Список параметров
-
URI
-
URI, указывающий на документ.
-
encoding
-
Кодировка документа или
NULL
. -
options
-
Битовая маска, состоящая из LIBXML_* констант.
Возвращаемые значения
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки. при статическом вызове, возвращается XMLReader или FALSE
в случае возникновения ошибки.
Ошибки
Этот метод
может быть вызван статически, но при этом будет сгенерирована ошибка
уровня E_STRICT
.
Список изменений
Версия | Описание |
---|---|
5.2.0 |
Были добавлены параметры encoding и options .
|
Смотрите также
- XMLReader::xml() - Установить данные, содержащие XML для разбора
- XMLReader::close() - Закрыть ввод XMLReader
- Функция XMLReader::close() - Закрыть ввод XMLReader
- Функция XMLReader::expand() - Возвратить копию текущего узла в виде объекта DOM
- Функция XMLReader::getAttribute() - Получить значение атрибута с определённым именем
- Функция XMLReader::getAttributeNo() - Получить значение атрибута по индексу
- Функция XMLReader::getAttributeNs() - Получить значение атрибута по localname и URI
- Функция XMLReader::getParserProperty() - Указывает, было ли определенное свойство установлено
- Функция XMLReader::isValid() - Показать, является ли разбираемый документ синтаксически правильным
- Функция XMLReader::lookupNamespace() - Найти пространство имён для префикса
- Функция XMLReader::moveToAttribute() - Переместить курсор к атрибуту с заданным именем
- Функция XMLReader::moveToAttributeNo() - Переместить курсор на атрибут по индексу
- Функция XMLReader::moveToAttributeNs() - Переместить курсор к именованному атрибуту
- Функция XMLReader::moveToElement() - Позиционировать курсор на родительском элементе текущего атрибута
- Функция XMLReader::moveToFirstAttribute() - Переместить позицию курсора на первый атрибут
- Функция XMLReader::moveToNextAttribute() - Переместить позицию курсора на следующий атрибут
- Функция XMLReader::next() - Переместить курсор на следующий узел, пропуская все поддеревья
- Функция XMLReader::open() - Установить URI, содержащий XML-документ для разобора
- Функция XMLReader::read() - Переместиться к следующему узлу в документе
- Функция XMLReader::readInnerXML() - Извлечь XML из текущего узла
- Функция XMLReader::readOuterXML() - Получить XML из текущего узла, включая сам узел
- Функция XMLReader::readString() - Прочитать содержимое текущего узла как строку
- Функция XMLReader::setParserProperty() - Устанавливает опцию парсера
- Функция XMLReader::setRelaxNGSchema() - Устанавить имя файла или URI для схемы RelaxNG
- Функция XMLReader::setRelaxNGSchemaSource() - Устанавливает данные, содержащие схему RelaxNG
- Функция XMLReader::setSchema() - Проверить документ, используя XSD
- Функция XMLReader::XML() - Установить данные, содержащие XML для разбора
Коментарии
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.
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).
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.
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 ...
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');
?>