欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c json字符串轉(zhuǎn)xml文件

林玟書2年前8瀏覽0評論

如何將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)此功能。