xerces sax last html двойные кавычки в значении игнорируются

Я использую Xerces SAX для анализа файла XML.

Значения между двумя HTML-кавычками анализируются неправильно. Отображается только одна цитата, а последняя — нет. Пример :

<Rating_Text>&quot;a3&quot;</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);
}

В режиме отладки я проверил, что в «символах» нет последних двойных кавычек и длина правильная (она не включает последнюю двойную кавычку). Похоже, Xerces игнорирует последнее

Если я заменю HTML-код для двойных кавычек реальными кавычками», я получу все значение в обратном вызове... так почему же в случае использования HTML-кода для представления двойных кавычек Xerces решает разделить строку??


person Aminos    schedule 25.12.2015    source источник
comment
&quot; будет ", а не '. А можешь показать свой код, пожалуйста?   -  person Martin Honnen    schedule 25.12.2015
comment
SAX может быть странным, вы уверены, что не просто получаете два или более вызовов обработчика событий characters, где второй вызов имеет вторую кавычку? Я не думаю, что с SAX есть гарантия, что вы получите полные данные символов за один вызов.   -  person Martin Honnen    schedule 25.12.2015
comment
@MartinHonnen Да, ты прав! только что проверил!! но это очень обидно! Мне нужно получить всю строку (которая, как видите, маленькая) за один вызов! как предсказать, что строковое значение не является полным? о боже!   -  person Aminos    schedule 25.12.2015
comment
Я добавил тег для SAX к вашему вопросу, надеюсь, кто-то еще может рассказать вам больше о SAX, я в основном использую XSLT или, по крайней мере, древовидные модели, такие как DOM, где есть удобные способы или свойства, такие как textContent, чтобы получить полный текст внутри узел элемента.   -  person Martin Honnen    schedule 25.12.2015
comment
Спасибо, я действительно не хочу добавлять какой-то дополнительный код для обработки такого типа ситуаций, это усложнит мой и без того сложный общий анализатор XML (общий для моей работы/специальности), но я действительно хочу знать, почему после символа 'a ' после двойной кавычки Xerces решил обрезать строку...   -  person Aminos    schedule 25.12.2015


Ответы (1)


Что ж, я нашел идею, я помещу часть обработки в обратный вызов endElement, а в обратном вызове символов я просто конкатенирую строку, содержащую значение элемента;)

person Aminos    schedule 25.12.2015