Использование знака британского фунта в канале XML для чтения с iPhone - PullRequest
5 голосов
/ 08 октября 2010

Я создал веб-канал XML UTF-8 для использования в приложении iPhone.

При просмотре в веб-браузере, если в ленте есть знак британского фунта, появляется неприятная ошибка XML: ошибка синтаксического анализа XML: неопределенная сущность

Однако сам файл кажется читабельным.

1. Сможет ли iPhone NSParser прочитать файл или произойдет сбой из-за этого символа?

2. Можно ли закодировать знак фунта для XML?

Ответы [ 4 ]

13 голосов
/ 08 октября 2010

если корм содержит британский фунт подписать, я получаю неприятную ошибку XML: XML Ошибка синтаксического анализа: неопределенная сущность

Возможно, ваш фид использует сущность £ в качестве символа фунта. £ - это HTML-сущность, которую нельзя использовать, не объявив их с DTD, связанным (или встроенным) в ваш XML-документ. Если объект не определен, синтаксический анализатор XML сообщит, что обнаружил неизвестный объект.

Поскольку вы сказали, что ваш фид закодирован как UTF-8, вы можете просто использовать символ фунта как таковой - нет необходимости в объекте. Как и предполагал LukeH, другое решение - использовать символьную ссылку £, которая будет читаться синтаксическим анализатором XML как символ фунта.

9 голосов
/ 08 октября 2010

Вы можете просто использовать £ сущность.

5 голосов
/ 11 октября 2010

Мое окончательное решение, которое, похоже, работает во всех случаях, состоит в замене всех специальных символов по мере их ввода.

  public function xmlEntities($text)
  {
    $search = array('&','<','>','"','\'', chr(163), chr(128), chr(165));
    $replace = array('&amp;', '&lt;', '&gt;', '&quot;', '&apos;', '&#163;', '&#8364;', '&#165;');

    $text = str_replace($search, $replace, $text);

    return $text;
  }
1 голос
/ 05 мая 2011

Как вы показали фрагмент кода PHP ...

У меня была та же проблема, но ваша примерная функция xmlEntities ($ text) {...} выше не работала.

Изменение на htmlspecialchars () сработало, однако - поскольку (в моем случае) я забочусь только о символах, которые испортили бы разбор XML-документа (<,> и т. Д.), Все остальное должно быть допустимым Unicode....

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