Проблема синтаксического анализа XML Lite - игнорировать неверные данные при анализе
Я использую XML Lite от Microsoft (http://msdn.microsoft.com/en-us/library/windows/desktop/ms752872%28v=vs.85%29.aspx)
Есть ли способ игнорировать любые ошибки проверки, которые он может совершить (я получаю некоторую непонятную ошибку на узле, связанном с "" - хотя ввод XML кажется просто нормальным) и просто перейти к следующим узлам?
У меня есть цикл чтения, как это
while ( !reader->IsEOF())
{
result = reader->Read(&nodeType);
if (result != S_OK)
{
//just ignore cuurrent read and continue reading more from XML
continue; // does not work
}
1 ответ
Решение
Что такое код ошибки, возвращаемый XmlLite? Недопустимые символы? XmlLite - это совместимый с W3C синтаксический анализатор XML. Это означает, что он задуман, чтобы задушить недопустимые XML-файлы с недопустимыми символами, и нет такой функции, чтобы игнорировать недопустимый символ и двигаться дальше. Варианты:
- Используйте XmlLite или другой совместимый синтаксический анализатор XML для генерации XML. Таким образом, вы не получите недопустимого персонажа.
- Отфильтруйте недопустимые символы, если у вас есть контроль над исходными данными. XmlLite поддерживает XML 1.0 с диапазоном допустимых символов как #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [# X10000-#x10FFFF].
Кроме этого, XmlLite, вероятно, не может быть вашим выбором.