DataSet内置支持XML双向序列化:WriteXml()可按IgnoreSchema、WriteSchema或DiffGram模式导出数据与结构;ReadXml()自动识别并加载,但默认清空原数据;WriteXmlSchema/ReadXmlSchema用于纯XSD交换。
DataSet 是 .NET 中用于内存中缓存关系型数据的核心类,它天然支持与 XML 的双向序列化——不需要额外引用或第三方库,靠内置方法就能完成转换。
DataSet 提供 WriteXml() 方法,可直接导出为 XML 格式。它能保存数据(Rows)、结构(Schema)甚至关系(Relations)和约束(Constraints),具体行为由 XmlWriteMode 控制:
示例:
ds.WriteXml("data.xml", XmlWriteMod
用 ReadXml() 可将 XML 加载回 DataSet。它会自动识别是否含 Schema:
注意:ReadXml 默认会清空原有表内容;若想追加,需先调用 DataSet.Merge() 或手动控制。
若只需交换结构(比如定义接口契约),可用:
这样可实现“先定结构再填数据”的协作流程,避免类型推断偏差。
转换过程看似简单,但几个细节容易踩坑:
,ReadXml 能正确还原为 DBNull.Value
,ReadXml 可自动重建关联 基本上就这些。只要用对 WriteXml / ReadXml 和对应模式,DataSet 和 XML 之间的来回转换非常直接,也不依赖外部配置。