Возможно, у вас недостаточно прав для записи в C:\
. В таком случае Xerces может сообщить об ошибке, вызвавшей исключение.
Исключение Access Denied
, как правило, можно ожидать, если вы попытаетесь выполнить запись в системный каталог без учетных данных администратора.
Возможно, это также связано с разделителями каталогов:
XMLFormatTarget *formatTarget = new LocalFileFormatTarget("C:\\test.xml");
В Windows разделители каталогов имеют обратную косую черту "\". Некоторым библиотекам все равно (и я никогда не использовал Xerces, поэтому не могу сказать). В C
и C++
обратная косая черта также является escape-символом , поэтому вы должны удвоить , если хотите, чтобы в строке было буквальное "\".
Кроме того, если вы скажете, что вы получили исключение, это поможет нам еще больше.
Не имеет прямого отношения, но из вашего кода кажется, что вы никогда не delete
formatTarget
. Я предполагаю, что это пример кода, но если это не так, вы должны добавить следующую строку в ваш код:
delete formatTarget;
Или используйте указатель с областью действия вместо:
boost::scoped_ptr<XMLFormatTarget> formatTarget(new LocalFileFormatTarget("C:\\test.xml"));
Чтобы избежать утечек памяти.