DataTable.WriteXml()可直接保存为XML文件,支持WriteSchema(默认含结构)、IgnoreSchema(仅数据)和DiffGram(同步变更)三种模式,并建议用try-catch处理异常。

直接用 DataTable.WriteXml() 方法就能保存,简单高效,不需要手动拼接XML字符串。
基础写法:保存为标准XML文件
调用 WriteXml() 传入文件路径即可,它会自动创建文件并写入符合 DataTable 结构的 XML 内容(含 Schema):
dataTable.WriteXml("data.xml");
这样生成的 XML 同时包含数据和表结构(列名、类型等),后续用 ReadXml() 能完整还原 DataTable。
只保存数据不保存Schema
如果只需要纯数据(比如兼容旧系统或减小文件体积),加一个参数:
-
XmlWriteMode.IgnoreSchema:只写数据行,不写列定义 -
XmlWriteMode.WriteSchema(默认):写数据 + Schema -
XmlWriteMode.DiffGram:写变更状态(用于同步场景)
dataTable.WriteXml("data.xml", XmlWriteMode.IgnoreSchema);
带异常处理的安全写法
实际项目中建议包一层 try-catch,避免路径无效或磁盘满等问题导致崩溃:
try
{
dataTable.WriteXml("output.xml");
Console.WriteLine("保存成功");
}
catch (UnauthorizedAccessException)
{
Console.WriteLine("没有写入权限");
}
catch (DirectoryNotFoundException)
{
Console.WriteLine("目标文件夹不存在");
}
catch (Exception ex)
{
Console.WriteLine($"保存失败:{ex.Message}");
}
进阶:自定义格式或添加注释
WriteXml() 本身不支持直接加注释或缩进美化,但可以先写入 XmlDocument 或 XDocument 再处理:
- 用
WriteXml(XmlWriter)重载,配合XmlWriterSettings控制缩进 - 先保存到内存流,再加载为
XDocument添加注释或调整结构
一般需求无需这么复杂,原生方法已足够清晰可靠。
基本上就这些,一行代码起步,按需加参数或异常处理就行。










