Как заставить XML-парсер игнорировать отсутствующие объекты - PullRequest
4 голосов
/ 28 июня 2011

Как вы можете указать анализатору XML игнорировать сущности, на которые есть ссылки, но которые не объявлены?

Я получаю исключения вроде этого:

org.xml.sax.SAXParseException: сущность "альфа" была указана, но не объявлен.

Я хочу, чтобы синтаксический анализатор обрабатывал строку "& alpha;" как простая строка символов, а не как символьная сущность.

Кроме того, у меня много таких сущностей, поэтому я не могу сказать парсеру игнорировать их по отдельности.

1 Ответ

5 голосов
/ 28 июня 2011

Вы можете написать скрипт (например, с помощью sed или perl), который использует замену регулярного выражения для предварительной обработки входных документов и экранирования амперсандов, за исключением начала символьных сущностей, которые распознает XML (т. Е. Пять предопределенных ) и любые, которые вы объявили).

например. сценарий заменит & на & в начале строк, например α, что приведет к α. Но это оставило бы < и   в покое.

Вопрос, который вы задаете, сводится к следующему: «Как получить инструменты, предназначенные для синтаксического анализа XML (то есть правильно сформированного XML), для обработки не-XML (то есть плохо сформированного XML)?» И ответ почти всегда будет заключаться в том, чтобы сначала использовать не XML-инструменты, чтобы исправить ввод и сделать его корректным.

...