在現代的軟件開發中,XML 和 JSON 是兩種常用的數據格式。XML 被廣泛應用于 Web Service 和 SOAP 協議中,而 JSON 則是大多數 Web 應用程序中的首選數據格式。因此,將 XML 轉換為 JSON 成為了一個非常重要的任務。
為了實現將 XML 轉換為 JSON,我們可以利用 C 語言中的第三方庫,例如 libxml2 和 cJSON 庫。它們都提供了豐富的 API 來處理 XML 和 JSON 數據格式。下面我們將以 libxml2 庫為例,介紹一種實現 XML 轉換為 JSON 的方法。
// 導入必要的庫 #include#include #include #include #include #include "cJSON.h" // 遞歸遍歷 XML 樹節點 void parseXml(cJSON *json, xmlNodePtr node) { xmlNodePtr cur = NULL; xmlChar *content = NULL; // 遍歷節點 for (cur = node; cur != NULL; cur = cur->next) { // 若為元素節點 if (cur->type == XML_ELEMENT_NODE) { // 若節點不為空 if (cur->children != NULL) { // 若該節點尚未在 json 對象中創建 if (!cJSON_HasObjectItem(json, cur->name)) { cJSON_AddObjectToObject(json, cur->name, cJSON_CreateObject()); } // 遞歸解析子節點 parseXml(cJSON_GetObjectItem(json, cur->name), cur->children); } // 若節點為空,則添加一個空字符串 else { cJSON_AddStringToObject(json, cur->name, ""); } } // 若為文本節點 else if (cur->type == XML_TEXT_NODE) { content = xmlNodeGetContent(cur); // 添加該節點的文本內容 cJSON_AddStringToObject(json, "value", (const char *)content); xmlFree(content); } } } // 將 XML 數據轉換為 JSON 數據 cJSON *xmlToJson(const char *xmlData) { xmlDocPtr doc = NULL; xmlNodePtr rootNode = NULL; cJSON *json = cJSON_CreateObject(); if (xmlData == NULL) { cJSON_AddStringToObject(json, "error", "XML data is empty."); return json; } // 解析 XML 數據 doc = xmlReadMemory(xmlData, strlen(xmlData), NULL, NULL, XML_PARSE_NOBLANKS); if (doc == NULL) { cJSON_AddStringToObject(json, "error", "Fail to parse XML data."); return json; } rootNode = xmlDocGetRootElement(doc); // 處理根節點 parseXml(json, rootNode); xmlFreeDoc(doc); xmlCleanupParser(); return json; } // 主函數 int main() { const char *xmlData = " "; cJSON *json = xmlToJson(xmlData); char *jsonData = cJSON_Print(json); printf("%s\n", jsonData); cJSON_Delete(json); free(jsonData); return 0; } Three Men in a Boat Jerome K. Jerome $12.99
在上述代碼中,我們首先定義了 parseXml 函數,該函數使用遞歸地方式遍歷 XML 樹節點,并將解析后的數據存入 cJSON 對象中。然后,我們通過 xmlToJson 函數將 XML 數據轉換成 cJSON 對象,最后使用 cJSON_Print 函數將 cJSON 對象打印成 JSON 數據格式。
到此為止,我們介紹了如何使用 C 語言中 libxml2 和 cJSON 庫來實現將 XML 數據轉換成 JSON 格式。這種方法可以幫助您快速地將現有的 XML 數據轉換成 JSON 格式,提高數據處理的效率,并為您的項目開發工作帶來便利。