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

c xml在線轉json

阮建安2年前8瀏覽0評論

在日常工作中,我們常常需要將XML數據轉換成JSON格式。這時候,我們可以使用C語言編寫一個XML轉JSON的工具。

其中,需要用到libxml2庫,它是一款非常強大的XML解析器,在linux系統下十分流行。

#include#include#include#includevoid xml_to_json(xmlNode *node, json_t *json)
{
xmlNode *cur_node = NULL;
json_t *tmp_json = NULL;
for (cur_node = node; cur_node; cur_node = cur_node->next)
{
json_t *jobj = json_object();
if (cur_node->type == XML_ELEMENT_NODE)
{
tmp_json = json_string((const char *)cur_node->name);
json_object_set(jobj, "name", tmp_json);
if (cur_node->children != NULL)
{
tmp_json = json_object();
xml_to_json(cur_node->children, tmp_json);
json_object_set(jobj, "children", tmp_json);
}
}
else
{
if (cur_node->content != NULL)
{
tmp_json = json_string((const char *)cur_node->content);
json_object_set(jobj, "value", tmp_json);
}
}
json_array_append(json, jobj);
}
}
int main(int argc, const char **argv)
{
xmlDoc *doc = NULL;
xmlNode *root_element = NULL;
char *filename = "sample.xml";
if (argc >1)
{
filename = (char *)argv[1];
}
doc = xmlReadFile(filename, NULL, 0);
if (doc == NULL)
{
printf("Could not parse xml file %s", filename);
return 1;
}
root_element = xmlDocGetRootElement(doc);
json_t *jroot = json_object();
xml_to_json(root_element, jroot);
char *json_str = json_dumps(jroot, JSON_INDENT(4));
printf("%s", json_str);
xmlFreeDoc(doc);
return 0;
}

上述代碼主要是使用了libxml2庫和jansson庫來實現XML轉JSON的功能。其中,xml_to_json函數是核心函數,它遞歸地將XML節點轉換為JSON對象,并將其存儲在json數組中。

最后,我們只需要將json數組轉換成JSON字符串即可。使用json_dumps函數可以將JSON對象轉換為JSON字符串。

以上就是使用C語言編寫XML轉JSON工具的實例,希望對大家有所幫助。