Я использую XML для отправки информации о проекте между приложениями. Одним из элементов информации является описание проекта. Итак, у меня есть:
<ProjectDescription>Test & spaces around&some & amps!</ProjectDescription>
Или: "Тест и пробелы вокруг, а также усилители!" <- ХОРОШО! </p>
Когда я затем использую Expat для его анализа, мой обработчик данных получает только части всей строки за раз.
«Тест», затем «&», затем «пробелы вокруг», следующий «&» и т. Д. И т. Д. Когда я затем пытаюсь восстановить исходную строку, все пробелы вокруг & отбрасываются, потому что обработчик данных никогда не попадает в увидеть их. Когда я переписываю XML, я получаю:
<ProjectDescription>Test&spaces around&some&amps!</ProjectDescription>
Или: "Тест и пробелы вокруг, а также усилители!" <- ПЛОХО! </p>
Это известная проблема с существующими обходными решениями?
Есть ли какая-то настройка, которую я могу дать Expat для управления его поведением вокруг экранированных символов?
Мои попытки погуглить ответ потерпели неудачу.
РЕДАКТИРОВАТЬ: В ответ на вопрос в комментариях:
У меня есть собственный обработчик, который я регистрирую парсером:
parser=XML_ParserCreate(NULL);
XML_SetUserData(parser,&depth);
XML_SetElementHandler(parser,startElement,endElement);
XML_SetCharacterDataHandler(parser,dataHandler);
Обработчик объявлен следующим образом:
static void dataHandler(void *userData,const XML_Char *s,int l)
И тогда «s» содержит данные в элементе. Без всяких & вещей - это вся строка между тегами open и close, в случае «строки с пробелами».