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

c 中xml轉為json格式文件

劉柏宏1年前7瀏覽0評論

XML是一種常用的數據交換格式,在許多系統中都被廣泛采用。然而,在某些情況下,將XML轉換為JSON格式的文件更加方便和易于處理。那么,如何使用C語言將XML文件轉換為JSON格式呢?

首先需要引入libxml2庫,在程序中使用xmlReadFile函數將XML文件轉換為一個DOM文檔。然后,可以遍歷DOM文檔中的每一個節點,并將其轉換為JSON格式的對象。最后,再將JSON對象轉換為JSON格式的字符串,保存為文件即可。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <jansson.h>
int main(int argc, char *argv[]) {
xmlDocPtr doc;
xmlNodePtr cur;
const char *filename;
json_t *root;
if (argc< 2) {
fprintf(stderr, "Usage: %s filename.xml\n", argv[0]);
exit(1);
}
filename = argv[1];
/* Read the XML file into a DOM document */
doc = xmlReadFile(filename, NULL, XML_PARSE_NOBLANKS);
if (doc == NULL) {
fprintf(stderr, "Error: Unable to parse input file %s\n", filename);
exit(1);
}
/* Traverse the DOM tree and convert to JSON object */
cur = xmlDocGetRootElement(doc);
root = convert_node_to_json(cur);
/* Convert JSON object to JSON string */
char *json_string = json_dumps(root, JSON_INDENT(2));
fprintf(stdout, "%s\n", json_string);
/* Clean up */
xmlFreeDoc(doc);
xmlCleanupParser();
json_decref(root);
free(json_string);
return 0;
}
/* Recursive function to convert XML nodes to JSON objects */
json_t *convert_node_to_json(xmlNodePtr node) {
json_t *result;
switch (node->type) {
case XML_ELEMENT_NODE:
/* Convert element attributes to JSON object */
result = json_object();
for (xmlAttrPtr attr = node->properties; attr != NULL; attr = attr->next) {
json_object_set(result, (char *)attr->name, json_string((char *)attr->children->content));
}
/* Convert child nodes */
for (xmlNodePtr child = node->children; child != NULL; child = child->next) {
json_t *child_result = convert_node_to_json(child);
if (json_is_array(result)) {
json_array_append(result, child_result);
} else {
json_object_set(result, (char *)child->name, child_result);
}
}
break;
case XML_TEXT_NODE:
/* Convert text content to JSON string */
result = json_string((char *)node->content);
break;
case XML_CDATA_SECTION_NODE:
/* Convert CDATA content to JSON string */
result = json_string((char *)node->content);
break;
default:
/* Ignore comment nodes and other node types */
result = NULL;
break;
}
return result;
}

以上代碼通過libxml2庫將XML文檔轉換為JSON格式的字符串,可將其保存為文件,方便后續的處理和使用。