2015-09-10 4 views
0

У меня есть XML-ответ (предположительно UTF-8 по атрибуту кодирования), который содержит внутри элемента символ «\ uffff \ u0551», для которого xmlParseMemory() приводит к NULL- Документ с ошибкой XML-Verarbeitungsfehler: nicht wohlgeformt [неформованный].Продолжить синтаксический анализ после прочтения уродливого символа

Могу ли я настроить parserChain, чтобы библиотека пропускала эти символы и продолжала синтаксический анализ документа-результата?

Я прочитал некоторые (не все) страницы руководства с сайта xmlsoft.org, но ничего не нашел.

ответ

2

No. FFFF не valid Unicode character, недопустимые символы являются фатальные ошибки, и XML-спецификации объявляет fatal errors are unrecoverable:

После того, как была обнаружена фатальная ошибка, однако, процессор не должен продолжать нормальную обработку (т.е. он не должен продолжать передавать персональные данные и информацию о логической структуре документа в приложение обычным способом).

Если вы хотите разобрать этот документ, вам нужно будет очистить недопустимые символы перед передачей его в парсер XML.

+0

какая жалость. Я надеялся на некоторую «магию» внутри libxml2, которая делает эту очистку. (как я не знаю, какие еще инвалиды меня отправят в другом месте) –

+0

Это сосание для этой конкретной ситуации. XML был разработан с этими ограничениями в спецификации, поэтому мы можем заявить, что «этот сайт создает недопустимый XML». Поскольку мы гарантируем, что парсер не может справиться с этим напрямую, он надеется оказать на них давление, чтобы исправить их сломанное программное обеспечение. –

Смежные вопросы