DataSet.ReadXml 是 C# 中将 XML 加载到 DataSet 的核心方法,支持文件路径、Stream、TextReader、XmlReader 等输入源,需 XML 符合结构约定;WriteXml 默认只写数据,推荐用 XmlWriteMode.WriteSchema 保存 Schema 以确保还原准确性。
DataSet.ReadXml 是 C# 中将 XML 数据加载到 DataSet 的核心方法,配合 WriteXml 可实现完整的读写闭环。它不依赖数据库,适合配置、缓存、轻量数据交换等场景。
支持多种输入源:文件路径、Stream、TextReader、XmlReader。最常用的是文件路径和 XmlReader(便于控制解析行为)。
ds.ReadXml("data.xml") —— 简单但无法捕获格式异常细节XmlReader 更可控:var reader = XmlReader.Create("data.xml", new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore, IgnoreWhitespace = true });
ds.ReadXml(reader); 或能推断出表/列),否则可能只读出数据没结构,或抛 InvalidOperationException
WriteXml 默认只写数据(无 Schema),若需下次准确还原结构,应显式指定 XmlWriteMode.WriteSchema。
ds.WriteXml("output.xml")
ds.WriteXml("output.xml", XmlWriteMode.WriteSchema)
var ms = new MemoryStream(); ds.WriteXml(ms, XmlWriteMode.WriteSchema); ms.Position = 0;
实际使用中容易遇到结构不匹配、编码错误、命名冲突等问题。
(默认)或显式指定 DataSet.DataSetName 后再写入;也可在 XML 中用 匹配 DataTable 名称),且 XmlReader.Create 不会自动识别,建议用带编码的 StreamReader 构造 XmlReader
2025-05-20T14:23:15.123),读取时也期望该格式;若源 XML 是 "2025/05/20",需先预处理或改用字符串列 + 手动转换DataSet + XML 是 .NET Framework 时代的典型做法,但在 .NET Core/.NET 5+ 中已不推荐用于新项目。现代更倾向:
– 强类型对象 + System.Text.Json 或 Newtonsoft.Json(JSON 更轻、更主流)
– 需 X
ML 时用 XmlSerializer 序列化自定义类
– 大数据量或高性能场景避免 DataSet,改用 DataTable 或实体集合 + XmlReader/Writer 流式处理