Я не думаю, что это ошибка.DOMDocument::loadXML()
, кажется, просто переопределяет внутреннюю версию и настройки кодирования с параметрами, обнаруженными в данной строке XML, - фактически перекрывая все, что было установлено в конструкторе DOMDocument
.
$d = new DOMDocument('1.0', 'UTF-8');
$d->loadXML('<root><node/></root>');
var_dump(array(
'encoding' => $d->encoding, // NULL
'version' => $d->xmlVersion // 1.0
));
$d->loadXML('<?xml version="1.0" encoding="ISO-8859-1"?><root><node/></root>');
var_dump(array(
'encoding' => $d->encoding, // ISO-8859-1
'version' => $d->xmlVersion // 1.0
));
Поэтому, если вы используете DOMDocument::loadXML()
, вы должны убедиться, что строка XML содержит допустимое объявление XML.Аргументы конструктора используются при создании документа с нуля.