使用字符串函数在C中解析xml

时间:2011-06-20 13:04:13

标签: c string substring

我有一个xml文件,我必须阅读并解析才能找到一个值。

我在文件中两个位置的标签中提到了这个值,如下所示:

<length>xx</length>

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

我需要提取xx和yy。我使用简单的字符串函数(由于大小限制我不能使用xml Parsers)。

哪些字符串函数可以帮助我提取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 个答案:

答案 0 :(得分:2)

我建议使用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
    }
}