【发布时间】:2016-03-02 08:21:46
【问题描述】:
我正在尝试将 DataSet 序列化为 XML 文件。
从示例输出中可以看出,我的所有表都有名称,数据集也被命名。数据集命名空间是“”,更改它没有效果。
被捕获的异常是:
无法序列化 DataTable。数据表名称未设置。
正如您在下面很清楚地看到的那样,所有表都已命名。
DataSet Name: TestDataSet
Table: TABLE1
Table: TABLE2
Table: TABLE3
Table: TABLE4
Table: TABLE5
无法序列化 DataTable。数据表名称未设置。
这是我用来序列化数据集的代码:
using (FileStream stream = new FileStream("db.xml", FileMode.Create))
{
dataSet.WriteXml(stream, XmlWriteMode.WriteSchema);
stream.Close();
}
如果XmlWriteMode 是WriteSchema,则创建 xml 文件并填充架构,仍然会引发异常。如果XmlWriteMode 为IgnoreSchema 并创建空文件并抛出异常。
是什么导致了这个问题?我在这里和网络上的其他地方浏览了大量帖子,每个人都说“设置表名”。我已经这样做了,但没有任何区别。
【问题讨论】:
-
过去一个 db.xml。没有所有行,只有一些数据。
-
问题可能出在生成数据集的代码中,您必须提供此代码或生成相同错误的示例(模型)。
-
我想我已经弄清楚问题所在了。使用 JSON.NET 将数据从 JSON 反序列化到数据集中。某些表中的一列将其类型设置为 DataTable。我认为序列化程序不知道如何处理这些列。这有意义吗?
-
DataSet 是这样创建的:DataSet dataSet = JsonConvert.DeserializeObject
(jsonData);
标签: c# xml serialization dataset xml-serialization