XML-разбор с "&", "®", но все равно получаю ошибки - PullRequest
3 голосов
/ 17 октября 2011

Куда бы я ни посмотрел, посты говорят мне избегать специальных символов xml с их сущностью html, но я все еще получаю ошибки синтаксического анализа XML. Я получаю сообщение об ошибке «Неопознанный объект», и оно появляется в & amp; и & reg; знаки (без пробелов). Как я могу это исправить и почему это все равно будет выдавать ошибки?

<?xml version="1.0" encoding="UTF-8"?>
<maps>
    <location id="tx">
        <item label="Lobby &amp; Entrance" xpos="125" ypos="112" />
        <item label="Restaurant &amp; Bar" xpos="186" ypos="59" />
        <item label="Swimming Pool" xpos="183" ypos="189" />
        <item label="Nautilus Gym&reg;" xpos="154" ypos="120" />
    </location>
</maps>

Ответы [ 4 ]

12 голосов
/ 17 октября 2011

Заменить: &reg; по: &#174; а также &amp; по: &#38;

и ваш XML будет действительным

6 голосов
/ 17 октября 2011

XML содержит только небольшое количество «встроенных» имен сущностей символов.«amp» - одна из встроенных функций, поэтому маловероятно, что вы получаете там ошибку.Однако «reg» не является встроенным.

Чтобы исправить это, вы можете использовать числовую ссылку вместо reg, использовать фактический символ или включить объявление объекта для reg, например:

<!ENTITY reg "&#174;">

Вы можете посмотреть в DTD XHTML , чтобы получить полный набор объявлений сущностей для сущностей HTML.

1 голос
/ 17 октября 2011

Куда бы я ни посмотрел, посты говорят мне избегать специальных символов xml с их html-сущностью

Не. Использовать сущности XML.

Я получаю сообщение об ошибке «Неопознанная сущность», и оно появляется на отметках &amp; и &reg;.

У вас не должно возникнуть проблем с &amp;, поскольку это часть XML. Вы должны использовать сломанный парсер. Трудно сказать, поскольку вы не предоставили ни одного кода, который вы используете для анализа этого.

&reg;, с другой стороны, не должен анализироваться анализатором XML, если вы не включите DTD, который его определяет. Используйте числовые объекты или (еще лучше) реальный символ и подходящую (UTF-8) кодировку символов.

1 голос
/ 17 октября 2011

XML определяет только объекты &amp;, &lt; и &gt;. &reg; недействительно, если вы не объявите каким-либо образом.

...