# simple_yaml **Repository Path**: xfwangqiang/simple_yaml ## Basic Information - **Project Name**: simple_yaml - **Description**: simple_yaml是一个轻量级的YAML解析器,使用纯C语言实现,支持主流操作系统和嵌入式RTOS平台。项目采用抽象层设计,便于移植到不同的文件系统和内存管理库。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-13 - **Last Updated**: 2026-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # simple_yaml 基于C语言的YAML解析器,专为嵌入式系统设计,支持多平台运行。 ## 简介 simple_yaml是一个轻量级的YAML解析器,使用纯C语言实现,支持主流操作系统和嵌入式RTOS平台。项目采用抽象层设计,便于移植到不同的文件系统和内存管理库。 ## 特点 - 纯C语言实现,不依赖标准库函数 - 支持三种基本数据结构:映射(mapping)、序列(sequence)、标量(scalar) - 支持复合结构:映射和序列可以嵌套组合 - 支持多种标量类型:字符串、布尔值、整数、浮点数、null、日期、时间 - 支持多行块字符串(| 保留换行,> 折叠换行) - 支持流式风格({} 内联映射,[] 内联序列) - 提供文件操作抽象层和内存操作抽象层 - 支持内存检测功能,便于发现内存泄漏 ## 目录结构 | 名称 | 描述 | | --- | --- | | docs | 文档目录 | | examples | 示例代码和测试文件 | | inc | 头文件目录 | | src | 源文件目录 | | Kconfig | RT-Thread配置文件 | | package.json | RT-Thread软件包信息 | | SConscript | RT-Thread构建脚本 | | LICENSE | MIT许可证 | | README.md | 项目说明 | ## 移植方法 ### 已支持平台 1. 将inc和src目录复制到项目目录 2. 在使用simple_yaml的.c文件中包含yaml_export.h 3. 根据目标平台配置yaml_config.h中的OS_VER宏 ### 未支持平台 1. 配置OS_VER为OS_UNKOWN(4) 2. 调用yaml_fconfig函数配置文件抽象操作函数 3. 调用yaml_mconfig函数配置内存抽象操作函数 ## 使用示例 ### 基于GCC+Makefile构建 ```bash cd examples/build/make make example ./simple_yaml ../../yamltest.yaml ``` ### 基于RT-Thread构建 1. 在ENV工具中使用menuconfig选择simple_yaml软件包 2. 运行pkgs --update下载软件包 3. 编译并下载固件 4. 在msh中输入yaml_test运行示例 ## API接口 ### 文件操作 ```c struct yamlnode *yaml_load(char *path); // 加载YAML文件 int yaml_save(struct yamlnode *root, char *path); // 保存YAML文件 ``` ### 节点操作 ```c struct yamlnode *yamlnode_create(enum yamlnode_type type); // 创建节点 int yamlnode_delete(struct yamlnode *node); // 删除节点 struct yamlnode *yamlnode_getchild(struct yamlnode *node, char *key); // 获取子节点 int yamlnode_getvalue(struct yamlnode *node, char *buffer); // 获取节点值 ``` ## 许可证 MIT License ## 仓库 - GitHub: https://github.com/yamldev/simple_yaml ## 文档 详细使用方法请参考 [如何使用simple_yaml](docs/如何使用simple_yaml.md)