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

c語言xml2json

黃文隆1年前9瀏覽0評論

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格式數據時更加輕松自如。