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

c 將xml轉換為json格式

錢諍諍2年前9瀏覽0評論

C語言是一種廣泛應用于嵌入式系統領域的編程語言,其強大的數據處理能力和高效的執行速度,使得它成為了很多開發者的首選語言。而在實際開發中,我們往往需要將XML文件轉換為JSON格式,以方便數據的處理和傳輸。下面,我們就來介紹一下C語言中將XML文件轉換為JSON格式的方法。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <jansson.h>
static void xml2json(xmlDocPtr doc, json_t *json_obj);
static void xml_getnode(xmlDocPtr doc, xmlNodePtr cur, json_t *json_obj);
int main()
{
xmlDocPtr doc = xmlParseFile("sample.xml");
if (doc == NULL)
{
fprintf(stderr, "Failed to parse XML\n");
return 1;
}
json_t *json_obj = json_object();
xml2json(doc, json_obj);
char *json_str = json_dumps(json_obj, JSON_INDENT(4));
printf("%s\n", json_str);
xmlFreeDoc(doc);
free(json_str);
json_decref(json_obj);
return 0;
}
static void xml2json(xmlDocPtr doc, json_t *json_obj)
{
xmlNodePtr root = xmlDocGetRootElement(doc);
if (root == NULL)
{
return;
}
xml_getnode(doc, root, json_obj);
}
static void xml_getnode(xmlDocPtr doc, xmlNodePtr cur, json_t *json_obj)
{
while (cur != NULL)
{
if (cur->type == XML_ELEMENT_NODE && cur->children != NULL)
{
json_t *new_obj = json_object();
xml_getnode(doc, cur->children, new_obj);
char *key = (char *)cur->name;
json_t *old_obj = json_object_get(json_obj, key);
if (old_obj == NULL)
{
json_object_set_new(json_obj, key, new_obj);
}
else if (json_is_array(old_obj))
{
json_array_append(old_obj, new_obj);
}
else
{
json_t *array = json_array();
json_array_append(array, old_obj);
json_array_append(array, new_obj);
json_object_set(json_obj, key, array);
}
}
else if (cur->type == XML_TEXT_NODE && cur->content != NULL)
{
char *value = (char *)cur->content;
json_array_append(json_obj, json_string(value));
}
cur = cur->next;
}
}

以上就是將XML文件轉換為JSON格式的示例代碼,通過使用libxml和jansson這兩個常用的庫,我們可以在C語言中輕松完成這一轉換,并方便地進行數據處理和傳輸。