在進(jìn)行前后端交互的開發(fā)工作中,經(jīng)常會遇到需要將XML格式的數(shù)據(jù)轉(zhuǎn)換為JSON格式的數(shù)據(jù)的需求。而在C語言中,我們可以使用一些第三方庫來實現(xiàn)這項任務(wù)。下面我們就來介紹一下如何在C語言中實現(xiàn)將XML轉(zhuǎn)換為JSON實體的過程。
#include "json-c/json.h" #include "libxml/parser.h" // 將Libxml2節(jié)點(diǎn)轉(zhuǎn)換成JSON實體 json_object* xml_to_json(xmlNodePtr node) { json_object *result = json_object_new_object(); xmlNodePtr cur_node = NULL; xmlChar* tmp_string = NULL; // 遍歷所有子節(jié)點(diǎn) for (cur_node = node->children; cur_node; cur_node = cur_node->next) { // 如果是元素節(jié)點(diǎn),則將其轉(zhuǎn)化為JSON實體 if (cur_node->type == XML_ELEMENT_NODE) { json_object *child = xml_to_json(cur_node); json_object_object_add(result, (char *)cur_node->name, child); } // 如果是文本節(jié)點(diǎn),則直接將其值轉(zhuǎn)化為JSON字符串 else if (cur_node->type == XML_TEXT_NODE) { tmp_string = xmlNodeGetContent(cur_node); json_object *child = json_object_new_string((const char *)tmp_string); json_object_object_add(result, "value", child); xmlFree(tmp_string); } } return result; } // 將XML文檔轉(zhuǎn)換成JSON實體 json_object* xml_doc_to_json(xmlDocPtr doc) { json_object *result = NULL; xmlNodePtr root_node = xmlDocGetRootElement(doc); if (root_node) { result = xml_to_json(root_node); } return result; }
上面的C語言代碼中,我們通過調(diào)用“xml_to_json”函數(shù)來將XML文檔中的節(jié)點(diǎn)轉(zhuǎn)換為JSON實體。對于XML文本節(jié)點(diǎn),我們直接將其值轉(zhuǎn)換為JSON字符串,然后添加到對應(yīng)的JSON對象中;對于XML元素節(jié)點(diǎn),我們遞歸調(diào)用“xml_to_json”函數(shù),并將返回值添加到對應(yīng)的JSON對象中。另外,我們還提供了一個“xml_doc_to_json”函數(shù),用于將整個XML文檔轉(zhuǎn)換為JSON實體。
上一篇python 花括號用法
下一篇esxi與json