Как удалить недопустимые символы из XML-файла? - PullRequest
2 голосов
/ 17 декабря 2009

Я использую PHP SimpleXML для работы с файлами XML на моем сервере. Мне нужно только прочитать содержимое XML (мне не нужно его изменять), поэтому я остановился на простом и удобном в использовании SimpleXML. Но у SimpleXML возникают проблемы при чтении определенного файла XML, потому что в нем есть очень странные символы. Я получаю следующие ошибки:

Warning: simplexml_load_file() [function.simplexml-load-file]: data/data.xml:348: parser error : PCDATA invalid Char value 3 in C:\xampp\htdocs\VMP\xintel\analyzer.php on line 54

Warning: simplexml_load_file() [function.simplexml-load-file]: Jardin al fte. Hall de recepcion, amplio living comedor. ocina comedor diario c in C:\xampp\htdocs\VMP\xintel\analyzer.php on line 54

У меня нет контроля над тем, что входит в XML-файл, поэтому я не могу остановить добавление этих символов в файл. Кроме того, я не знаю, как решить эту проблему. Файл должен быть закодирован в utf-8. Поэтому я попробовал такие вещи, как декодирование из UTF-8 в ISO-8859-1 и наоборот, но ничего не происходит.

Может ли кто-нибудь мне помочь? Должен ли я попытаться изменить кодировку? Должен ли я попытаться удалить эти символы? Что-нибудь? * * 1006

Редактировать: Стангр-символы - это все символы рисования прямоугольников (см .: http://en.wikipedia.org/wiki/Box-drawing_characters)

Ответы [ 3 ]

5 голосов
/ 17 декабря 2009

У меня есть приложение, которое получает XML из ненадежных источников, многие из которых отправляют мне незашифрованные амперсанды. Чтобы решить эту проблему, у меня есть промежуточный фильтр, который выполняет один линейный проход и избавляется от / кодирует символы, где это необходимо. Я не знаю, возможно ли это для вас, но я думаю, что это довольно разумное решение.

2 голосов
/ 17 декабря 2009

Может быть, вы могли бы передать ввод через Tidy , чтобы сделать его правильно сформированным. Один простой шаг предварительной обработки перед подачей файла в SimpleXML.

Например, tidy::repairFile выглядит многообещающе.

0 голосов
/ 17 декабря 2009

Обычно все символы файла XML интерпретируются, если они не находятся в разделе CDATA => текст ссылки

Если это не так, ваш XML недействителен.

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