XML和JSON都是常用的數(shù)據(jù)交換格式。XML是一種標(biāo)記語言,常用于Web數(shù)據(jù)交換和配置文件。JSON是JavaScript對象表示,僅僅是一個字符串,且可讀性比XML更好。
將XML轉(zhuǎn)換為JSON的技術(shù)是C XML to JSON。這是一個開源庫,可以很好地完成XML到JSON的轉(zhuǎn)換。C XML to JSON使用標(biāo)準(zhǔn)C語言編寫,因此可以在許多平臺上使用,包括Linux和Windows。
#include <stdio.h> #include <stdlib.h> #include <cjson/cJSON.h> #include <libxml/parser.h> int main() { char *xml_data; xml_data = "<root><name>John</name><age>30</age></root>"; xmlDoc *doc = xmlParseDoc((const xmlChar *)xml_data); xmlNode *root_element = xmlDocGetRootElement(doc); cJSON *root = cJSON_CreateObject(); #define ADD_CJSON(key, value) cJSON_AddItemToObject(root, #key, cJSON_CreateString(value)) for (xmlNode *current_node = root_element->children; current_node; current_node = current_node->next) { if (current_node->type == XML_ELEMENT_NODE) { ADD_CJSON(current_node->name, (char*)xmlNodeGetContent(current_node)); } } char *json = cJSON_Print(root); printf("%s\n", json); cJSON_Delete(root); xmlFreeDoc(doc); xmlCleanupParser(); return 0; }
以上是一個簡單的使用C XML to JSON將XML轉(zhuǎn)換為JSON的代碼示例。將XML數(shù)據(jù)傳遞給xmlParseDoc()函數(shù)進行解析,然后使用xmlDocGetRootElement()獲取根元素。接著,使用cJSON_CreateObject()創(chuàng)建一個JSON對象,使用cJSON_AddItemToObject()添加鍵值對,最后使用cJSON_Print()將JSON對象轉(zhuǎn)換成字符串。