使用C中的expat针对DTD文件检查XML文件

时间:2015-02-06 10:29:07

标签: c xml parsing dtd

我需要构建一个应用程序,它应该使用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函数的调用,但我不明白如何使用它。

提前谢谢。

0 个答案:

没有答案