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

c json轉換為xml格式

錢琪琛1年前9瀏覽0評論

在編程過程中,有時需要將JSON格式的數據轉換為XML格式,這可以通過使用C語言中的一些庫來輕松實現。其中,使用CJSON庫和libXML庫是兩種常見的方法。

首先,我們需要導入CJSON和libXML的頭文件:

#include "cJSON.h"
#include#include

然后,我們可以先將JSON數據解析為cJSON格式:

char *json_string = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
cJSON *root = cJSON_Parse(json_string);

接著,我們可以創建一個xmlDocPtr類型的文檔對象,用libXML庫的函數將cJSON格式的數據轉換為XML格式:

xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0");
xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST "root");
xmlDocSetRootElement(doc, root_node);
xmlNodePtr child_node = cJSON2xml(root_node, root); // 將cJSON格式的數據轉換為XML格式

其中,cJSON2xml函數是我們自己編寫的用于將cJSON格式轉換為XML格式的函數。其代碼如下:

xmlNodePtr cJSON2xml(xmlNodePtr xml_node, cJSON *cjson_node)
{
xmlNodePtr new_xml_node = NULL;
while (cjson_node != NULL)
{
switch (cjson_node->type)
{
case cJSON_NULL:
new_xml_node = xmlNewText(BAD_CAST "");
break;
case cJSON_Number:
new_xml_node = xmlNewText(BAD_CAST cJSON_Print(cjson_node));
break;
case cJSON_String:
new_xml_node = xmlNewText(BAD_CAST cJSON_GetStringValue(cjson_node));
break;
case cJSON_Array:
new_xml_node = xmlNewNode(NULL, BAD_CAST "array");
cJSON_ArrayForEach(cjson_node, cjson_node)
{
cJSON2xml(new_xml_node, cjson_node);
}
break;
case cJSON_Object:
new_xml_node = xmlNewNode(NULL, BAD_CAST cJSON_GetObjectItem(cjson_node, "name")->valuestring);
cJSON *child_node = cJSON_GetObjectItem(cjson_node, "value");
cJSON2xml(new_xml_node, child_node);
xmlAddChild(xml_node, new_xml_node);
break;
}
xmlAddChild(xml_node, new_xml_node);
cjson_node = cjson_node->next;
}
return xml_node;
}

最后,我們可以使用libXML庫的函數將XML格式的數據保存到文件中:

xmlSaveFormatFileEnc("output.xml", doc, "UTF-8", 1);

這樣,我們就成功將JSON格式的數據轉換為XML格式,并保存到了文件中。