C語言是一種廣泛使用于系統和應用軟件開發的編程語言,而XML是一種被廣泛應用于Web系統中數據交互格式的標記語言。對于開發人員來說,將XML解析為JSON格式是一種常見的轉化方式,因為JSON具有更加清晰和易于使用的結構。在C語言編程中,我們可以使用xml2json庫來輕松地將XML轉換為JSON格式。
#include<stdio.h> #include<string.h> #include<libxml/parser.h> #include<libxml/tree.h> #include<libxml/xmlstring.h> #include<json-c/json.h> /* 傳入XML格式 * <?xml version="1.0"?> * <person> * <name>Alice</name> * <age>22</age> * </person> * */ json_object* xml_to_json(char* xml_str){ xmlDocPtr doc = xmlParseMemory(xml_str, strlen(xml_str)); if(doc == NULL){ fprintf(stderr, "XML parsing error\n"); return NULL; } xmlNodePtr root = xmlDocGetRootElement(doc); if(root == NULL){ xmlFreeDoc(doc); fprintf(stderr, "Cannot get root element.\n"); return NULL; } json_object* jobj = json_object_new_object(); xmlNodePtr cur_node = NULL; for(cur_node = root->children; cur_node; cur_node = cur_node->next){ if(cur_node->type == XML_ELEMENT_NODE) json_object_object_add(jobj, (char*)cur_node->name, json_object_new_string((char*) xmlNodeGetContent(cur_node))); } xmlFreeDoc(doc); return jobj; } int main(){ char* xml_str = "<?xml version=\"1.0\"?><person><name>Alice</name><age>22</age></person>"; json_object* jobj = xml_to_json(xml_str); printf("%s\n", json_object_to_json_string_ext(jobj, 0)); json_object_put(jobj); return 0; }
以上代碼段演示了如何將一段XML格式的字符串轉換為JSON格式的字符串,通過調用xml2json庫提供的函數獲取節點信息并組裝為JSON對象,最終調用json-c庫的函數將JSON對象轉換為字符串。使用xml2json庫可以讓C語言開發人員在處理XML格式數據時更加輕松自如。