我需要构建一个应用程序,它应该使用EXPAT解析XML文件,并根据DTD文件进行检查。问题是我该怎么做,我检查了文档,然后无法找到解决办法。
到目前为止我的代码:
int main(int argc, char *argv[])
{
XML_Parser p = XML_ParserCreate(NULL);
if (!p)
{
fprintf(stderr, "Couldn't allocate memory for parser\n");
exit(-1);
}
FILE* xmlFile;
xmlFile = fopen("test.xml", "r");
XML_SetElementHandler(p, start, end);
XML_SetParamEntityParsing(p, XML_PARAM_ENTITY_PARSING_ALWAYS);
for (;;)
{
int done;
int len;
len = (int) fread(Buff, 1, BUFFSIZE, xmlFile);
if (ferror(xmlFile))
{
fprintf(stderr, "Read error\n");
exit(-1);
}
done = feof(xmlFile);
if (XML_Parse(p, Buff, len, done) == XML_STATUS_ERROR)
{
fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%s\n",
XML_GetCurrentLineNumber(p),
XML_ErrorString(XML_GetErrorCode(p)));
exit(-1);
}
if (done)
break;
}
XML_ParserFree(p);
return 0;
}
我想这应该是对XML_SetExternalEntityRefHandler
函数的调用,但我不明白如何使用它。
提前谢谢。