Мне нужно загрузить XML-документ в PHP, который поступает из внешнего источника. XML не объявляет его кодировку и содержит незаконные символы, такие как &
. Если я попытаюсь загрузить XML-документ непосредственно в браузере, я получаю такие ошибки, как «Недопустимый символ был найден в текстовом содержимом» также при загрузке файла на PHP. Я получаю много предупреждений, таких как: xmlParseEntityRef: no name in Entity
и Input is not proper UTF-8, indicate encoding ! Bytes: 0x9C 0x31 0x21 0x3C
.Исправить неверный XML в PHP перед обработкой с использованием функций DOMDocument
Понятно, что XML не очень хорошо сформирован и содержит незаконные символы, которые должны быть преобразованы в объекты XML.
Это потому, что XML-канал состоит из данных, предоставленных множеством других пользователей, и, очевидно, он не проверяется и не переформатирован, прежде чем я его получу.
Я говорил с поставщиком XML-фида, и они говорят, что пытаются заставить контент-провайдеры разобраться в этом, но это кажется глупым, поскольку они должны сначала подтвердить ввод.
Мне в основном нужно исправить XML, исправляя любые ошибки кодирования и преобразовывая любые незаконные символы в объекты XML, чтобы проблема XML загружалась при использовании функций DOMDocument PHP.
Мой код в настоящее время выглядит следующим образом:
$feedURL = '3704017_14022010_050004.xml';
$dom = new DOMDocument();
$dom->load($feedURL);
Пример XML-файл, показывающий проблему кодирования (нажмите, чтобы загрузить): feed.xml
Пример XML, который содержит символы, которые не были преобразованы к объектам XML:
<?xml version="1.0"?>
<feed>
<RECORD>
<ID>117387</ID>
<ADVERTISERNAME>Test</ADVERTISERNAME>
<AID>10544740</AID>
<NAME>This & This</NAME>
<DESCRIPTION>For one day only this is > than this.</DESCRIPTION>
</RECORD>
</feed>
«Как все остальные счастливые клиенты (?) Имеют дело с данными и почему я единственный несчастный парень» - вот вопрос, который я задал бы провайдеру. Можете ли вы предоставить (точный) примерный документ? – VolkerK
Мне это было интересно.Я говорил с ними, и они сказали мне, что у них проблемы с качеством данных, и сказали контент-провайдерам разобраться. Я предполагаю, что другие клиенты нашли способ исправить фид XML, прежде чем пытались его обработать. Отсюда мой вопрос. – Camsoft
@VolkerK Я загрузил подмножество всего XML-документа как полный XML, как более 42 000 строк. – Camsoft