在ANSI C中验证xml以防止放松

Gya*_*eep 5 c xml relaxng

是否可以针对ANSI C中的Relax NG模式验证xml文件?我遇到过这个名为libxml2的库,但是我可以从中获得的所有帮助都是关于如何解析xml文件的.请帮忙.

如果可以做到,步骤是什么?完全不了解C环境.

jmb*_*mbr 6

这是一个简约的例子(您当然应该添加自己的错误检查):

 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/types.h>

 #include <libxml/xmlmemory.h>
 #include <libxml/parser.h>
 #include <libxml/relaxng.h>

 int
 main(int argc, char *argv[])
 {
    int status;
    xmlDoc *doc;
    xmlRelaxNGPtr schema;
    xmlRelaxNGValidCtxtPtr validctxt;
    xmlRelaxNGParserCtxtPtr rngparser;

    doc = xmlParseFile(argv[1]);

    rngparser = xmlRelaxNGNewParserCtxt(argv[2]);
    schema = xmlRelaxNGParse(rngparser);
    validctxt = xmlRelaxNGNewValidCtxt(schema);

    status = xmlRelaxNGValidateDoc(validctxt, doc);
    printf("status == %d\n", status);

    xmlRelaxNGFree(schema);
    xmlRelaxNGFreeValidCtxt(validctxt);
    xmlRelaxNGFreeParserCtxt(rngparser);
    xmlFreeDoc(doc);
    exit(EXIT_SUCCESS);
 }
Run Code Online (Sandbox Code Playgroud)

用gcc -I/usr/include/libxml2 rngval.c -o rngval -lxml2编译

您可以访问http://xmlsoft.org/html/libxml-relaxng.html查看相关文档