Разбор XML в C с использованием строковых функций - PullRequest
0 голосов
/ 20 июня 2011

У меня есть XML-файл, который я должен прочитать и проанализировать, чтобы найти одно значение.

У меня есть это значение в тегах в двух местах файла:

<length>xx</length>

<length type = "float">yy</length>

Мне нужно извлечь хх и уу. Я использую простые строковые функции (из-за ограничений размера я не могу использовать парсеры xml).

Какие строковые функции помогут мне извлечь xx и yy?

Я пробовал strtok () в этих строках, но безуспешно ..:

fp = fopen( "trial.xml", "r" );
    if(fp == NULL){
        perror("file missing");
    }


    while (fgets (buffer, sizeof (buffer), fp) != NULL) {
                char *p;
            p = strstr(buffer, "<length");
            if(p != NULL){
            printf("p = %s\n", p);
            p = strtok (p, "<>");
            printf("strtok 1, p = %s\n", p);
            p = strtok (NULL, "<>");
            printf("p = %s\n", p);
         }

1 Ответ

2 голосов
/ 21 июня 2011

Я бы предложил использовать TinyXML для анализа.

Если вы хотите использовать грубую силу ...

fp = fopen( "trial.xml", "r" );
if(!fp) {
    perror("file missing");
}

while(fgets (buffer, sizeof (buffer), fp)) {
    if(strstr(buffer, "<length>")) {
        char* start = strchr(buffer, '>');
        start++;
        char* end = strchr(buffer, '<');
        end = '\0';
        printf("%s\n", start);      // prints xx
    }
    if(strstr(buffer, "<length type = \"float\">")) {
        char* start = strchr(buffer, '>');
        start++;
        char* end = strchr(buffer, '<');
        end = '\0';
        printf("%s\n", start);      // prints yy
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...