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

c怎么把xml格式轉(zhuǎn)json格式轉(zhuǎn)換

錢瀠龍2年前8瀏覽0評論

在使用C語言進行編碼時,將XML格式轉(zhuǎn)換為JSON格式是一個常見的需求。以下是一個簡單的示例,展示了如何在C語言中使用函數(shù)將XML格式轉(zhuǎn)換為JSON格式。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<libxml/parser.h>
#include<libxml/tree.h>
#include<cJSON.h>
/**
* 解析XML節(jié)點并將其轉(zhuǎn)換為JSON對象。
*/
cJSON* parseXML(xmlNodePtr node) {
cJSON* obj = cJSON_CreateObject();   // 創(chuàng)建JSON對象
xmlNodePtr curNode = NULL;  // 定義XML節(jié)點
char* value = NULL;  // 定義值字符串
// 循環(huán)遍歷XML節(jié)點
for (curNode = node->xmlChildrenNode; curNode != NULL; curNode = curNode->next) {
if (curNode->type == XML_ELEMENT_NODE) {
value = (char*)xmlNodeGetContent(curNode);  // 取得節(jié)點的值
// 將XML節(jié)點轉(zhuǎn)換為JSON對象的鍵值對
cJSON_AddItemToObject(obj, (char*)curNode->name, cJSON_CreateString(value));
xmlFree(value);  // 釋放值字符串的內(nèi)存
}
}
return obj;
}
/**
 * 解析XML格式的字符串。
 */
cJSON* xmlToJson(char* xmlData) {
xmlDocPtr doc = NULL;  // 定義XML文檔
xmlNodePtr rootNode = NULL;  // 定義XML根節(jié)點
cJSON* rootObj = NULL;  // 定義JSON根對象
doc = xmlReadMemory(xmlData, strlen(xmlData), NULL, NULL, 0);  // 讀取XML字符串
if (doc == NULL) {
fprintf(stderr, "Failed to parse document\n");  // 如果XML解析失敗,輸出錯誤信息
return NULL;
}
rootNode = xmlDocGetRootElement(doc);  // 獲取XML文檔的根節(jié)點
rootObj = parseXML(rootNode);  // 將根節(jié)點轉(zhuǎn)換為JSON對象
xmlFreeDoc(doc); // 釋放XML文檔
xmlCleanupParser(); // 清空XML解析器
return rootObj;
}
int main() {
char* xmlData = "<root><name>Tom</name><age>18</age></root>";
// 將XML格式字符串轉(zhuǎn)換成JSON格式字符串
cJSON* jsonObj = xmlToJson(xmlData);
// 輸出JSON格式字符串
if (jsonObj != NULL) {
char* jsonStr = cJSON_Print(jsonObj);
printf("%s\n", jsonStr);
free(jsonStr);  // 釋放JSON字符串的內(nèi)存
}
return 0;
}

在上面的示例中,我們使用了libxml2庫來解析XML格式的字符串,并使用cJSON庫來創(chuàng)建JSON對象和將JSON對象轉(zhuǎn)換為字符串。通過這種方式,我們可以快速地將XML格式轉(zhuǎn)換為JSON格式,并且可以方便地在C語言中進行處理。