Ошибка синтаксического анализа XML: неопределенная сущность - специальные символы - PullRequest
6 голосов
/ 25 января 2011

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

Например, ниже создаст ошибку,

<?xml version="1.0" standalone="yes"?>
<Customers>
    <Customer>
        <Name>L&ouml;ic</Name>
    </Customer>
</Customers>

но это нормально,

<?xml version="1.0" standalone="yes"?>
<Customers>
    <Customer>
        <Name>&amp;</Name>
    </Customer>
</Customers>

Кстати, я конвертирую специальный символ через php - htmlentities('Löic',ENT_QUOTES).

Как я могу обойти это?

Спасибо.

EDIT:

Я обнаружил, что он работает нормально, если я использую числовые символы, такие как L&#243;ic

Теперь я должен найти способ использовать php для преобразования специальных символов в числовые!

Ответы [ 2 ]

17 голосов
/ 25 января 2011

В спецификации XML определены пять объектов - &amp;, &lt;, &gt;, &apos; и &quot;

В HTML-коде DTD .

определено много объектов.

Вы не можете использовать те из HTML в общем XML.

Вы можете использовать числовые ссылки, но вам, вероятно, было бы лучше просто получить

прямую кодировку (что в основном сводится к:
  • Установите свой редактор , чтобы сохранить данные в формате UTF-8
  • Если вы обрабатываете данные с помощью языка программирования, убедитесь, что он поддерживает UTF-8
  • Если вы храните данные в базе данных, убедитесь, что они настроены для UTF-8
  • Когда вы подаете документ, убедитесь, что в заголовках HTTP указано, что это UTF-8 (в случае с XML UTF-8 является значением по умолчанию, поэтому не указывать ничего лучше)

)

3 голосов
/ 25 января 2011

Поскольку это не встроенная сущность, это внешняя сущность, которая требует объявления в DTD.

...