如何將C語言中的JSON字符串轉(zhuǎn)換為XML文件呢?在實際的開發(fā)過程中,這是常見的需求。下面我們將實現(xiàn)此功能的代碼展示給大家。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <libxml/parser.h> #include <cJSON/cJSON.h> void json_to_xml(cJSON* json,xmlDocPtr doc, xmlNodePtr parent) { if(json == NULL) return; switch(json->type) { case cJSON_Number: case cJSON_String: case cJSON_True: case cJSON_False: xmlNewChild(parent, NULL, BAD_CAST json->string, BAD_CAST json->valuestring); break; case cJSON_Object: { xmlNodePtr node = xmlNewChild(parent, NULL, BAD_CAST json->string, NULL); cJSON* child = json->child; while(child != NULL) { json_to_xml(child,doc,node); child = child->next; } break; } case cJSON_Array: { xmlNodePtr node = xmlNewChild(parent, NULL, BAD_CAST json->string, NULL); cJSON* child = json->child; while(child != NULL) { json_to_xml(child,doc,node); child = child->next; } break; } } } int main() { const char* json_str = "{\"name\":\"Sofia\",\"age\":24,\"hobbies\":[\"reading\",\"traveling\"]}"; cJSON* json = cJSON_Parse(json_str); xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0"); xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST "root"); xmlDocSetRootElement(doc, root_node); json_to_xml(json,doc,root_node); xmlSaveFormatFileEnc("output.xml", doc, "UTF-8", 1); cJSON_Delete(json); xmlFreeDoc(doc); xmlCleanupParser(); return 0; }
以上代碼中,我們首先將JSON字符串解析為cJSON結(jié)構(gòu)體。然后,我們通過libxml庫將cJSON結(jié)構(gòu)體轉(zhuǎn)換成XML文件。
總體來說,這是一個較為簡單的將JSON字符串轉(zhuǎn)換為XML文件的方法。但是需要注意的是,在實際的開發(fā)過程中,需要對JSON數(shù)據(jù)結(jié)構(gòu)及XML文件結(jié)構(gòu)有充分的了解,才能更好地實現(xiàn)此功能。