/*
//引入libxml2库头文件和相关函数库。
#include <libxml/parser.h> ///usr/include/libxml2/libxml/parser.h
#include <libxml/tree.h>
#include <libxml/xmlmemory.h>
*/
static void modifyXml(Webs *wp){
char *json_string = wp->input.servp;
cJSON *cjson = cJSON_Parse(json_string);
if (cjson == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
// 获取元素的值
cJSON *tag = cJSON_GetObjectItem(cjson, "tag");
cJSON *value = cJSON_GetObjectItem(cjson, "value");
// 打印元素的值
//printf("tag: %s\n", cJSON_GetStringValue(tag));
//printf("value: %s\n", cJSON_GetStringValue(value));
//定义需要修改的XML文件路径和节点名称
char *xmlFilePath = FILENAME;
char *xmlNodeName = cJSON_GetStringValue(tag);//需要修改的节点名称
//解析XML文件并获取根节点。
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(xmlFilePath);
if (doc == NULL) {
fprintf(stderr, "Failed to parse xml file.\n");
return;
}
//cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
fprintf(stderr, "Empty xml file.\n");
xmlFreeDoc(doc);
return;
}
//遍历XML文件中的所有节点,找到需要修改的节点
cur = cur->xmlChildrenNode;
while (cur != NULL) {
//xmlStrcmp对两个字符串进行比较,然后返回比较结果
if ((xmlStrcmp(cur->name, (const xmlChar *)xmlNodeName)==0)) {
// 找到需要修改的节点
// 在这里进行修改操作
xmlNodeSetContent(cur, (const xmlChar *)cJSON_GetStringValue(value));
}
cur = cur->next;
}
//保存修改后的XML文件。
xmlSaveFormatFileEnc(xmlFilePath, doc, "UTF-8", 1);
// 释放cJSON对象的内存
cJSON_Delete(cjson);
}