首页 > 其他分享 >使用libxml2库修改XML文件内容

使用libxml2库修改XML文件内容

时间:2023-12-27 15:58:25浏览次数:48  
标签:XML cur cJSON libxml2 value 修改 tag doc

/*
//引入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); }

 

标签:XML,cur,cJSON,libxml2,value,修改,tag,doc
From: https://www.cnblogs.com/luckLjh/p/17930727.html

相关文章

  • 电脑端 itunes 备份保存路径修改方法
    默认在c盘,重做系统就会丢失。1、先删除C:\Users\你的用户名\AppData\Roaming\AppleComputer里的MobileSync文件夹(首次安装iTunes没有,要先运行一下iTunes)。2、在你想存放iTunes备份的分区,新建一个文件夹,如F:\backup\itunes(你想换成其它名字也可以)3、按住键盘【Win+R】呼出“......
  • XML
    XML概述XML指可扩展标记语言(eXtensibleMarkupLanguage)。XML被设计用来传输和存储数据,不用于表现和展示数据,HTML则用来表现数据。XML很重要,也很容易学习。XML简介XML被设计用来传输和存储数据。HTML被设计用来显示数据。XML指可扩展标记语言(eXtensibleMarkupLangua......
  • [对象Owner]SQL Server数据库修改对象Owner
    查看a.查看数据库的ownerselecta.name,suser_sname(a.owner_sid)asonamefromsys.databasesaorderbyonameb.查看job的ownerselecta.name,suser_sname(a.owner_sid)asonamefrommsdb..sysjobsaorderbyonamec.查看endpoint的ownerselecta.name,a.pri......
  • Word 文档怎么保留修改前和修改后的内容--审阅 修订
    如果启用了修订内容后,对文档的内容进行了相关的修改后。则文档可以同时显示被修改的内容和修改后的内容。下面,本文通过举例具体介绍如何使用修订功能。点击选中文档内容,然后依次点击【审阅】-【修订】-【修订】选项。通过以上操作步骤,此时的文档内容处于修订的状态,用户在文档中直接......
  • 抓包工具charles修改请求和返回数据
    数据篡改的主要使用场景:(1)mock场景,mock入参和返回值参数,实现mock测试(2)安全测试,对于支付金额等比较重要的字段,可以修改请求参数来进行安全测试1.首先选择要篡改数据的接口,点击右键选择功能列表中的breakpoints。2.清空请求列表3.在终端重新发起请求,请求将会被拦截,会弹出当前......
  • ES 修改 Mapping
     https://www.cnblogs.com/ititit111222333/p/16382887.html新建v1indexPUT/test_v1设置v1mappingPOST/test_v1/_mapping{"properties":{"itemId":{"type":"long"},"itemName":{"type":&......
  • 34.Appium 源码修改定制
    为什么需要改造开源框架bugfix增强功能提升性能改造方式直接改造:直接改造开源框架,创建特性分支二次封装:不修改原有项目,直接进行上层封装插件改造:利用已有项目的插件或者扩展机制进行定制外挂改造:不修改原有代码的情况打补丁,利用mock、hook方法维护开源......
  • JavaWeb - Day11 - 案例 - 员工管理、文件上传、修改员工、配置文件
    01.案例-员工管理-新增员工前面我们已经实现了员工信息的条件分页查询以及删除操作。关于员工管理的功能,还有两个需要实现:新增员工修改员工首先我们先完成"新增员工"的功能开发,再完成"修改员工"的功能开发。而在"新增员工"中,需要添加头像,而头像需要用到"文件上传"技......
  • Windows修改pip国内镜像源
    ​ Windows下的pip配置文件路径:C:\Users\用户名\AppData\Roaming\pip\pip.ini如果pip文件夹不存在,则新建pip文件夹和pip.ini文件接着,在pip.ini文件中新增以下内容并保存:[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simpleextra-index-url= https://mirro......
  • pdf文件修改
    packagemainimport( "fmt" docx"github.com/lukasjarosch/go-docx")funcmain(){ replaceMap:=docx.PlaceholderMap{ "wilson1":"wilson", "wilson":"4205234243", "......