当前位置: 首页 > news >正文

xml json ini 文件语法

一文件内容语法

1.ini语法

特点:最古老、最简单,只有键=值+ 分组后缀.ini

语法规则

  1. [分组名]表示一节
  2. key=value存数据
  3. ;开头是注释
  4. 没有嵌套、没有数组
; 这是注释 [Database] Server=127.0.0.1 Database=TestDB UserId=sa [AppSet] LogPath=Logs/ AutoRun=True

优点 / 缺点

✅ 超级简单

❌ 不能存复杂结构(不能嵌套、不能列表)

2.xml语法

特点:用标签包裹,像 HTML,能嵌套、能加属性后缀.xml

语法规则

  1. 必须有根节点
  2. 格式:<节点>内容</节点>
  3. 可以嵌套
  4. 可以加属性
  5. <!-- 注释 -->

示例

<!-- XML注释 --> <Config> <Database> <Server>127.0.0.1</Server> <Database>TestDB</Database> </Database> <AppSet LogPath="Logs/" AutoRun="True" /> </Config>

优点 / 缺点

✅ 结构强、可嵌套、可属性

❌ 语法啰嗦、冗余多

3.JSON文件

特点:轻量、简洁、前后端通用后缀.json

语法规则

  1. { }表示对象
  2. [ ]表示数组 / 列表
  3. key: value
  4. 字符串必须用双引号
  5. 逗号分隔,最后一项不能加逗号
  6. 不能写注释(标准 JSON 不支持)

示例

{ "Database": { "Server": "127.0.0.1", "Database": "TestDB" }, "AppSet": { "LogPath": "Logs/", "AutoRun": true }, "UserList": [ { "Name": "张三", "Age": 20 }, { "Name": "李四", "Age": 21 } ] }

4.对比总结

格式

结构符号注释嵌套数组主流程度
INI[ ]key=val;❌ 不支持❌ 不支持老项目用
XML<标签><!-- -->✅ 支持❌ 麻烦老框架用
JSON{ } [ ]标准不支持✅ 支持✅ 支持🔥 现在首选

二命名空间依赖

文件类型命名空间说明
XMLSystem.Xml.Linq现代、简洁、LINQ 支持
JSONSystem.Text.Json.NET 官方自带
JSONNewtonsoft.Json最流行、兼容性强
INISystem.Runtime.InteropServices调用 Windows API
INIIniParser开源库,最简单

三文件解析

1.XML解析

using System; using System.Xml.Linq; // 读取 XML var xml = XDocument.Load("test.xml"); string name = xml.Element("Root")?.Element("Name")?.Value; int age = int.Parse(xml.Element("Root")?.Element("Age")?.Value); // 写入 XML var doc = new XDocument( new XElement("Root", new XElement("Name", "张三"), new XElement("Age", 20) ) ); doc.Save("out.xml");

2.JSON解析

using System; using System.Text.Json; // 定义类 public class User { public string Name { get; set; } public int Age { get; set; } } // 读取 JSON string json = System.IO.File.ReadAllText("user.json"); User user = JsonSerializer.Deserialize<User>(json); // 写入 JSON User u = new User { Name = "李四", Age = 25 }; string jsonStr = JsonSerializer.Serialize(u, new JsonSerializerOptions { WriteIndented = true }); System.IO.File.WriteAllText("out.json", jsonStr);

3.INI解析(调用Windows API)

C# 没有内置 INI 类,直接调用系统kernel32最简单:

using System; using System.Runtime.InteropServices; public static class IniHelper { [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, byte[] ret, int size, string filePath); // 读 public static string Read(string section, string key, string path) { byte[] buffer = new byte[1024]; int len = GetPrivateProfileString(section, key, "", buffer, buffer.Length, path); return System.Text.Encoding.UTF8.GetString(buffer, 0, len); } // 写 public static void Write(string section, string key, string value, string path) { WritePrivateProfileString(section, key, value, path); } } // 使用 IniHelper.Write("Config", "Name", "小明", "config.ini"); string name = IniHelper.Read("Config", "Name", "config.ini");
http://www.jsqmd.com/news/682673/

相关文章:

  • 2026届毕业生推荐的十大AI学术工具横评
  • 告别环境报错!Ubuntu 20.04 + Python 3.8 保姆级配置OpenHarmony 3.x编译环境
  • Spring Boot 3.3 + Loom GA版生产部署手册(含ClassLoader隔离、JFR采样、Arthas协程快照实操)
  • drawio-desktop完整指南:免费跨平台Visio替代方案
  • 树、森林——树和森林的遍历(森林的遍历)
  • CS Demo Manager开源实战指南:三步解决职业选手回放分析效率瓶颈
  • nRF Connect宏录制实战:手把手教你用XML脚本模拟真实用户操作,排查蓝牙间歇性断连
  • ARM裸机调试不求人:手把手教你用Semihosting在Trace32里打印日志(附Cortex-A/M配置差异)
  • 嘉立创EDA画板子+SMT贴片一条龙保姆级教程(附选型避坑指南)
  • Docker存储安全红线:7类未授权挂载风险场景曝光,CVE-2023-XXXX复现与零信任加固方案(含OCI合规检查表)
  • 避坑指南:设计UCIe互连时,关于D2D Adapter的5个关键配置与常见误区
  • 终极指南:ExplorerPatcher一键解决Windows 10开始菜单关闭延迟问题
  • 保姆级教程:在Ubuntu 20.04上为ARM开发板交叉编译GStreamer 1.14.0(含所有依赖库)
  • 运维视角:当Prometheus告警触发时,如何用K8s Operator实现自动化修复?
  • 终极指南:如何用BilibiliCommentScraper批量获取B站完整评论数据?[特殊字符]
  • 【国家药监局NMPA最新指南解读】:Docker在IVD软件SaaS化中的强制配置项(2024Q3生效,错过即停运)
  • 深入STM32 USB Audio协议栈:从描述符解析到数据流,搞懂音频如何被电脑识别和播放
  • 滴滴测开面试复盘:从两道烧脑智力题到‘猜数字’算法,我的真实闯关记录
  • Matplotlib子图与时间轴的精细调整
  • Keil自带的宝藏:RTX51 Tiny操作系统配置详解(附STC89C52工程文件)
  • Docker Swarm vs Kubernetes集群配置对比:3大核心指标实测,90%团队选错了方案?
  • CarMaker的Simulink模块库到底怎么用?从CM_SFun加密模块到自定义模型搭建的实用指南
  • MobaXterm文件传输失败?可能是Ubuntu的SSH安全设置搞的鬼(解决方案+避坑指南)
  • ROFL-Player:英雄联盟回放文件分析工具的终极指南
  • 2026年实验/工业/淬火/回火/热处理/高温/大型/退火箱式炉厂家推荐:常州博纳德热处理系统有限公司 - 品牌推荐官
  • 不止于闪烁:用ESP8266和Arduino做个简易光控小夜灯,入门物联网硬件改造
  • DeepV框架:基于RAG的Verilog代码生成技术解析
  • 群晖DSM 7.X 保姆级教程:用计划任务挂载NTFS硬盘,实现冷热数据分离
  • 高压互锁(HVIL)的电路设计:从直流源到PWM方案的实战解析
  • AI时代开发者角色重构与能力升级