DataSet.WriteXmlSchema()方法可将DataSet的表结构、关系、约束等元数据导出为标准XSD文件,支持文件路径、Stream或XmlWriter,但不包含数据;使用前需确保Tables.Count>0。

可以使用 DataSet.WriteXmlSchema() 方法将 DataSet 的结构(即 Schema)单独写入 XML 文件,不包含数据。
使用 WriteXmlSchema() 写入 Schema
该方法只导出表结构、关系、约束、数据类型等元数据,生成标准的 XSD(XML Schema Definition)文件。
- 支持写入文件路径、
Stream或XmlWriter - 生成的 XML 符合 W3C XSD 规范,可被其他系统或工具读取用于校验或建模
- 若 DataSet 为空或未初始化,会抛出异常,建议先检查
DataSet.Tables.Count > 0
基础写法示例
将 Schema 保存为本地 .xsd 文件:
DataSet ds = new DataSet();
// ... 添加 DataTable、关系等
ds.WriteXmlSchema("schema.xsd"); // 直接写入文件
更安全的写法(含异常处理与验证)
推荐显式检查并使用 using 管理资源:
if (ds.Tables.Count == 0)
{
throw new InvalidOperationException("DataSet 中没有表,无法写入 Schema");
}
try
{
ds.WriteXmlSchema("output.xsd");
}
catch (UnauthorizedAccessException)
{
// 检查路径权限
}
catch (IOException ex)
{
// 处理磁盘满、路径无效等问题
}
写入内存流或字符串(适合 API 或临时处理)
若需获取 Schema 的 XML 字符串:
using (var stream = new MemoryStream())
{
ds.WriteXmlSchema(stream);
stream.Position = 0;
using (var reader = new StreamReader(stream))
{
string schemaXml = reader.ReadToEnd();
// schemaXml 即为 XSD 内容
}
}
不复杂但容易忽略:WriteXmlSchema 不会写入数据,如需同时保存结构和数据,应改用 WriteXml(..., XmlWriteMode.WriteSchema)。










