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

c xml解析為json

XML是一種常見(jiàn)的數(shù)據(jù)格式,但是很多時(shí)候我們需要將其轉(zhuǎn)化為JSON格式以便于前后端的數(shù)據(jù)傳輸。在C語(yǔ)言中,我們可以采用第三方庫(kù)libxml2來(lái)進(jìn)行XML的解析和JSON的生成。

//加載XML文件
xmlDocPtr doc = xmlReadFile("example.xml", NULL, 0);
if (doc == NULL) {
printf("Error: failed to parse file.");
return;
}
//獲取root節(jié)點(diǎn)
xmlNodePtr root = xmlDocGetRootElement(doc);
//定義JSON對(duì)象
json_object *json = json_object_new_object();
//遞歸解析XML節(jié)點(diǎn)
xmlNodePtr node = root;
traverse(node, json);
printf("JSON: %s\n", json_object_to_json_string(json));
//釋放資源
xmlFreeDoc(doc);
json_object_put(json);

其中,traverse函數(shù)是一個(gè)遞歸函數(shù),用于將XML節(jié)點(diǎn)轉(zhuǎn)化為JSON對(duì)象。具體實(shí)現(xiàn)如下:

void traverse(xmlNodePtr node, json_object *json) {
xmlNodePtr child = NULL;
for (child = node->children; child != NULL; child = child->next) {
if (child->type == XML_ELEMENT_NODE) {
//如果是元素節(jié)點(diǎn),創(chuàng)建一個(gè)新的JSON對(duì)象,將其加入到父節(jié)點(diǎn)中
json_object *new_json = json_object_new_object();
json_object_object_add(json, (char *)child->name, new_json);
traverse(child, new_json);
} else if (child->type == XML_TEXT_NODE) {
//如果是文本節(jié)點(diǎn),將其值作為一個(gè)字符串屬性加入到父節(jié)點(diǎn)中
char *value = (char *)xmlNodeListGetString(node->doc, child->xmlChildrenNode, 1);
json_object_object_add(json, (char *)"value", json_object_new_string(value));
}
}
}

通過(guò)以上代碼,我們可以將XML文件解析為JSON格式,方便前后端數(shù)據(jù)的傳輸和利用。