minixml库的使用入门(3.2版本)

开篇说明

使用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写的哈哈

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值