在現今互聯網時代,xml和json是常見的數據交換格式,而很多時候我們需要將xml轉換為json格式來適配某些應用程序。今天我們來學習使用C語言編寫一個將xml轉成json的函數。
#include <stdio.h> #include <stdlib.h> #include <string.h> void xml2json(char* xml, char* json){ char* token; char* substr; char* ptr; char* s = calloc(strlen(xml)+1, sizeof(char)); int indent = 0; strcat(s, "{\n"); token = strtok(xml, "\n"); while(token != NULL){ substr = strstr(token, "<"); if(substr != NULL){ ptr = strstr(substr, ">"); if(*(ptr-1) == '/'){ substr = NULL; ptr = NULL; } } if(substr != NULL){ if(substr != xml){ strcat(s, "\n"); } for(int i=0; i<indent+4; i++){ strcat(s, " "); } strncat(s, substr+1, ptr-substr-1); strcat(s, ": "); if(*(ptr+1) != '<'){ strncat(s, ptr+1, strstr(ptr, "</")-ptr-1); strcat(s, ","); token = strstr(ptr, "</"); }else{ indent += 4; strcat(s, "{\n"); token = strtok(NULL, "\n"); continue; } }else{ if(*(token-1) == '/'){ strcat(s, ","); token++; } if(indent == 0){ break; } strcat(s, "\n"); for(int i=0; i<indent; i++){ strcat(s, " "); } strcat(s, "}"); indent -= 4; } token = strtok(NULL, "\n"); } strcat(s, "\n}"); strcpy(json, s); free(s); } int main(){ char* xml = "<person>\n" " <name>John</name>\n" " <age>25</age>\n" "</person>"; char json[1024]; xml2json(xml, json); printf("%s", json); return 0; }
以上是一個簡單的xml轉json函數示例,適用于一些簡單的xml格式數據轉換,如果需要處理復雜的xml格式,還需要進一步完善代碼。
下一篇vue 移動版商城