欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c語言json與xml轉換

張吉惟1年前10瀏覽0評論

JSON(JavaScript Object Notation)和XML(Extensible Markup Language)是最常用的兩種數據交互格式,它們都有各自的優點和缺點。當我們需要將數據從JSON格式轉換為XML格式時,可以使用C語言編寫轉換程序。

在C語言中,我們可以使用第三方庫json-c來解析JSON格式的數據。該庫提供了一個名為json_object_to_xml_string的函數,可以將JSON對象轉換為對應的XML字符串。以下是一個示例代碼:

#include <json-c/json.h>
#include <stdio.h>
int main() {
char* json_str = "{ \"name\": \"john\", \"age\": 18 }";
struct json_object* json_obj = json_tokener_parse(json_str);
const char* xml_str = json_object_to_xml_string(json_obj);
printf("%s", xml_str);
return 0;
}

代碼中,json_tokener_parse函數用于將JSON格式的字符串解析成一個json_object對象。然后,通過json_object_to_xml_string函數,將該對象轉換為XML格式的字符串,并打印出來。

同樣地,當我們需要將XML格式的數據轉換為JSON格式時,可以使用C語言編寫轉換程序。在C語言中,我們可以使用第三方庫libxml2來解析XML格式的數據。該庫提供了一個名為xmlDocGetRootElement的函數,可以獲取XML文檔的根節點。以下是一個示例代碼:

#include <libxml/parser.h>
#include <libxml/tree.h>
#include <json-c/json.h>
#include <stdio.h>
int main() {
char* xml_str = "<person><name>john</name><age>18</age></person>";
xmlDocPtr doc = xmlParseMemory(xml_str, strlen(xml_str));
xmlNodePtr root = xmlDocGetRootElement(doc);
struct json_object* json_obj = json_object_new_object();
for(xmlNodePtr cur = root->xmlChildrenNode; cur != NULL; cur = cur->next) {
if(cur->type == XML_ELEMENT_NODE) {
char* key = (char*)cur->name;
char* value = (char*)xmlNodeGetContent(cur);
json_object_object_add(json_obj, key, json_object_new_string(value));
}
}
const char* json_str = json_object_to_json_string(json_obj);
printf("%s", json_str);
return 0;
}

代碼中,xmlParseMemory函數用于將XML格式的字符串解析成一個xmlDocPtr對象,然后通過xmlDocGetRootElement函數獲取根節點。接下來,我們用一個循環遍歷根節點的所有子節點,將子節點的名稱作為JSON對象的鍵,將子節點的內容作為JSON對象的值,并利用json_object_object_add函數將鍵值對添加到JSON對象中。最后,通過json_object_to_json_string函數,將JSON對象轉換成JSON格式的字符串,并打印出來。