Анализ программы C для синтаксического анализа (и проверки) XML

Благодаря jmbr в Stack Overflow я наконец нашел способ проверить xml на соответствие RELAX NG с помощью программы на C. Программа такая...

#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);

}

С тех пор я значительно доработал программу, чтобы узнать «время обработки» для разбора и проверки XML-файла. Есть ли способ узнать лучший и худший случай для этой программы. В худшем случае время, затрачиваемое на вход любого xml-файла, всегда будет самым высоким. И в лучшем случае время, затрачиваемое всегда самое низкое. Я действительно застрял в этом. Был бы очень признателен, если бы кто-нибудь из вас, ребята, мог мне помочь.


person Gyandeep    schedule 08.08.2011    source источник


Ответы (1)


Чтобы протестировать свой код, вы должны создать другой план тестирования и тестовый пример. В этом случае попробуйте другой входной файл xml...

1 файл кто чья вложенность столько раз

любой пропущенный файл xml тега (недопустимый файл xml)

xml, у которого нет типа документа или тегов, закодированы по-разному.

& для расчета времени обработки используйте time.h

person Jeegar Patel    schedule 08.08.2011
comment
Большое спасибо, мистер 32. Я делаю, как вы предложили, - вытаскиваю из Интернета несколько файлов xml и экспериментирую с ними. Большое спасибо, еще раз. - person Gyandeep; 08.08.2011