Загрузка и загрузка PHP DOMDocument в формате XML

#php #xml #domdocument

#php #xml #domdocument

Вопрос:

Я пытаюсь загрузить большой (12 МБ) XML-документ. Онлайн-валидатор XML сообщает, что этот документ действителен. DOMDocument::load загружает его просто отлично, но что-то идет не так с DOMDocument::loadXML:

 $doc = new DOMDocument();
$doc->load('document.xml');
echo $doc->saveXML(); // Works fine

...

$doc = new DOMDocument();
$text = file_get_contents('document.xml'); // fopen / fread gives the same result
$doc->loadXML($text); // Error!
echo $doc->saveXML();
 

Сообщение об ошибке выглядит следующим образом:

 Warning: DOMDocument::loadXML(): internal errorExtra content at the end of the document in Entity, line: 126617 in ... on line ...
 

Сообщение об ошибке указывает на вызов функции loadXML. XML-документ выглядит обычным, ничего интересного в строке 126617. Что я делаю не так? XML-документ можно загрузить отсюда: http://rghost.ru/download/56485804/089074ffefa7338c53ef40df59c4792e73f4a0c2/document.zip

Комментарии:

1. Более того, если я добавлю file_put_contents после file_get_contents, а затем использую $doc->load для этого нового файла, все также работает просто отлично.

2. это не сообщение об ошибке. Это предупреждение . Вы смотрели, что находится в строке 126617 в вашем файле?

3. Хорошо, это предупреждение, но документ не был загружен (проанализирован). «Эхо», следующее после loadXML, ничего не отображает. И в строке 126617 нет ничего особенного, ничего особенного, чего не было где-то раньше в этом документе. Вы можете скачать его и проверить самостоятельно.

4. Когда DOMDocument загружает разметку, он по умолчанию выдает ряд предупреждений и ошибок, связанных с контентом. Чтобы выполнить это, используйте libxml_use_internal_errors

5. Привет, Милошио, спасибо за совет, я запустил его с включенными внутренними ошибками, но я не нашел никакой новой информации: everfall.com/paste/id.php?75xofm65raz2