Я хочу внедрить DTD в приложение C++, проанализировать DTD и проверить на его соответствие XML-документ. Однако когда DTD становится достаточно большим, анализатор DTD дает сбой. Если я сбрасываю тот же DTD в файл, а затем использую xmlstarlet -d my.dtd my.xml, он работает правильно. Поэтому я подозреваю, что проблема с управлением буфером. Что я делаю не так?
#include
#include
#include
#include
/*
* DTD as a string.
* Disable any of the ATTLIST entries by setting the #if 0
* and the parser error goes away
*/
const char* dtdstr =
"\n"
#if 1
"\n"
#endif
"\n"
#if 1
"\n"
#endif
"\n"
#if 1
"\n"
#endif
"\n"
#if 1
"\n"
#endif
"\n"
"\n";
const char* xmlstr =
"\n"
" \n"
" \n"
" \n"
" \n"
" \n"
" \n"
"\n";
int main()
{
std::cout