Я использую Xerces SAX для анализа XML-файла.
Значения между двумя HTML-кавычками не анализируются правильно, отображается только одна цитата, а последняя — нет. Пример :
<Rating_Text>"a3"</Rating_Text>
анализируется как:
"a3
Тогда как это должно быть
"a3"
Как это исправить, пожалуйста?
//...
m_pXMLReader->setFeature(XMLUni::fgSAX2CoreValidation, true);
//...
void CXMLMsg::characters(
const XMLCh* const chars,
const XMLSize_t length
)
{
char* szData = XMLString::transcode(chars);
if(!isspace(*szData))
{
//
}
XMLString::release(&szData);
}
В режиме отладки я проверил, что в «chars» последние двойные кавычки отсутствуют и длина правильная (в нее не входят последние двойные кавычки). Похоже, Ксерсес игнорирует последний "
Если я заменю HTML-код для двойных кавычек на реальные кавычки «, я получу все значение в обратном вызове … так почему же в случае использования HTML-кода для представления двойных кавычек Xerces решает разбить строку ??
Ну, я нашел идею, я помещу часть обработки в обратный вызов endElement, а в обратном вызове символов я просто конкатенирую строку, содержащую значение элемента;)
Других решений пока нет …