Загрузите неверный XML в PHP DOM - PullRequest
0 голосов
/ 06 августа 2011

У меня есть и входной XML-файл, который неправильно отформатирован (т.е. он имеет «&» вместо «& amp;») Когда я пытаюсь загрузить этот XML, используя PHP DOM, $ doc-> load ("file.xml"), он выдает ошибку и останавливает синтаксический анализ.

Есть ли способ загрузить этот неформатированный XML? и нет, я не могу редактировать исходный файл XML. Я попытался использовать $ doc-> loadHTML (), но он выдает ошибки повсюду.

Я хотел знать, есть ли правильный способ сделать это (например, загрузить содержимое файла и изменить его с помощью регулярных выражений или чего-то подобного)

Ответы [ 3 ]

1 голос
/ 06 августа 2011

Попробуйте установить $doc->validateOnParse = false; перед загрузкой XML через $doc->loadHTML(...).

0 голосов
/ 06 августа 2011

Если вы уверены, что это единственное, что делает его недействительным, то вы можете попробовать загрузить файл в строку с помощью функции file_get_contents(), а затем выполнить поиск и замену в строке, чтобы изменить символы & на &,затем поместите эту строку в simpleXML как $xml = simplexml_load_string($cleaned_string);

0 голосов
/ 06 августа 2011

Сначала убедитесь, что ошибка вызвана &, а не чем-то другим.

Так или иначе, вам придется изменить XML, чтобы проанализировать его. HTML в loadHTML загружается из строки, вы не можете просто заменить недопустимые символы правильными?

Если ваша установка поддерживает расширение PHP Tidy (http://php.net/manual/en/book.tidy.php), вы можете попытаться очистить его с этим, хотя, по моему опыту, оно далеко не надежно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...