开篇说明
使用VS2008软件,C语言环境
Altova XMLSpy 2013,用来编辑显示xml文件
minixml库版本为3.2,由Mini-XML (msweet.org)官网下载
minixml官方有最新版本的4.0.3版本,但更新幅度比较大,其中的宏和函数参数都做了不小的修改,我这里只求先会用,网上教程基本都是3.x版本
反正就是因为要用但是折腾了一段时间,网上找的教程感觉并不是很好使,结果还是靠GPT,于是就来这里分享一个minixml的小例子(其实主要是基础太差,都不知道怎么添加外部库路径,就算会了VS2008也不会VScode怎么搞,折腾的很糊涂)
我个人是倾向于有个最简单的环境搭建完能运行出一个简单的结果,再一步步往上搭积木的。就好比一开始学习C语言能printf出一个hello world一样,哪里要是报警出错了我也不会,还望见谅。
操作步骤
1.解压从官网下载好的3.2版本minixml压缩包
2.打开VS2008,新建Win32 Console Application,记得勾选Empty project
3.左边项目蓝中右键ADD添加Existing Item,找到解压后的minixml文件夹,可以按住ctrl一个个把所有.c和.h文件一次性都添加进来。子文件夹和testmxml.c我就没考虑了。
这里遗漏了,解压后的文件夹里有个vcnet文件夹,还需添加一个config.h文件,同理需要把vcnet文件夹在第四步中将其文件路径也进行添加
4.右键项目属性(Properties),接下来配置外部库路径和生成类型
- Configuration Properties -> General ->Configuration Type,修改为Static Library(.lib),此行为将不再生成.exe而是生成静态库
- Configuration Properties -> C/C++ -> General ->Additional Include Directories,添加minixml解压后的文件夹路径
- 最后就可以进行build编译了,这样我们就可以在当前文件夹的Debug(或Release?)中找到生成.lib静态库文件。(如果没找到请返回该项目的上一级,也有个Debug文件夹)
5.重新新建一个Project
新建一个main.c文件,这次准备生成.exe文件
在配置属性(Configuration Properties)-> C/C++ -> 常规(General)->附加包含目录(Additional Include Directories),添加解压的minixml头文件路径
在配置属性 -> 链接器(Linker) -->常规 ->附加库目录(Additional Library Directories)中添加第四步刚生成.lib文件的Debug文件夹路径
在链接器 -> 输入(Input) -> 附加依赖项(Additional Dependencies)中写入第四步生成的.lib的文件名,我这里是mxml32.lib
6.复制粘贴下列程序,编译调试
#include <mxml.h> // Minixml 头文件
#include <stdio.h>
#include <stdlib.h>
// 函数声明
void WriteXML(const char * filename);
void ReadXML(const char * filename);
int main(void) {
const char * filename = "example.xml";
// 写入 XML 文件
WriteXML(filename);
// 读取 XML 文件
ReadXML(filename);
return 0;
}
void WriteXML(const char * filename) {
mxml_node_t *root, *child;
FILE * fp;
// 创建 XML 文档
root = mxmlNewElement(NULL, "Root");
child = mxmlNewElement(root, "Child");
mxmlNewText(child, 0, "Hello, XML!");
// 打开文件
fp = fopen(filename, "w");
if (fp == NULL) {
fprintf(stderr, "Failed to open file for writing: %s\n", filename);
return;
}
// 保存 XML 文档到文件
mxmlSaveFile(root, fp, MXML_NO_CALLBACK);
// 关闭文件
fclose(fp);
printf("XML file written successfully: %s\n", filename);
}
void ReadXML(const char * filename) {
mxml_node_t *tree, *node;
FILE * fp;
// 打开文件
fp = fopen(filename, "r");
if (fp == NULL) {
fprintf(stderr, "Failed to open file for reading: %s\n", filename);
return;
}
// 读取 XML 文档
tree = mxmlLoadFile(NULL, fp, MXML_TEXT_CALLBACK);
fclose(fp);
if (tree == NULL) {
fprintf(stderr, "Failed to load XML file: %s\n", filename);
return;
}
// 遍历子元素
for (node = mxmlGetFirstChild(tree); node; node = mxmlGetNextSibling(node)) {
if (mxmlGetType(node) == MXML_ELEMENT) {
printf("Element name: %s, Text: %s\n", mxmlGetElement(node),
mxmlGetText(node, NULL));
}
}
// 释放 XML 文档
mxmlDelete(tree);
}
7.最后在该VS2008项目文件夹下的子文件夹中,可以找到example.xml文件,点开有如下显示
至此就完成了最简单的通过函数编辑新建XML文件的操作了,剩下具体参考官方给出的minixml手册里展示的所有函数进行简单的增删改查,进一步的学习使用即可。
问我我也不知道,代码也是gpt写的哈哈