色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 實現xml轉json數據類型

錢浩然2年前8瀏覽0評論

在現代的軟件開發中,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 = "Three Men in a BoatJerome K. Jerome$12.99";
cJSON *json = xmlToJson(xmlData);
char *jsonData = cJSON_Print(json);
printf("%s\n", jsonData);
cJSON_Delete(json);
free(jsonData);
return 0;
}

在上述代碼中,我們首先定義了 parseXml 函數,該函數使用遞歸地方式遍歷 XML 樹節點,并將解析后的數據存入 cJSON 對象中。然后,我們通過 xmlToJson 函數將 XML 數據轉換成 cJSON 對象,最后使用 cJSON_Print 函數將 cJSON 對象打印成 JSON 數據格式。

到此為止,我們介紹了如何使用 C 語言中 libxml2 和 cJSON 庫來實現將 XML 數據轉換成 JSON 格式。這種方法可以幫助您快速地將現有的 XML 數據轉換成 JSON 格式,提高數據處理的效率,并為您的項目開發工作帶來便利。