如何在C#中将DataTable转换为XML文件?

18

我想在C#中将一个DataTable转换为XML文件,应该如何操作?


我在这里发布了一个答案,可能会有所帮助:https://stackoverflow.com/questions/17868607/datatable-to-xdocument-custom 您可以精确控制XML的构建方式(即存储为属性的内容,元素名称,存储为子元素的内容等)。它使用XDocument,您可以轻松编写代码,使用XDocument.Save(FileName)将其保存到文件中。 - MikeTeeVee
3个回答

33
你可以使用DataTable.WriteXml方法。
以下是一个示例: 我如何在C# 2.0中将我的DataTable转换为XML?
string result;
using (StringWriter sw = new StringWriter()) {
dataTable.WriteXml(sw);
result = sw.ToString();
}

如果您实际上不需要字符串,而是只需要可读、可处理的XML,则最好使用MemoryStream和XPathDocument。
XPathDocument result;
using (MemoryStream ms = new MemoryStream()) {
dataTable.WriteXml(ms);
ms.Position = 0;
result = new XPathDocument(ms);
}

谢谢。第一个方法使用TABLE标签包含一行。我能否用自定义标签(如ROW)替换它?当然,我可以搜索字符串并将TABLE替换为ROW,但我想采用不同的方法。 - Steam

9
你可以使用writeXML方法将其保存为XML (来源)。
你还可以像第五篇帖子中描述的那样使用序列化/反序列化论坛

8

另一种完成此操作的方法是将数据表添加到数据集中,并在数据集上调用GetXml()。除此之外,数据集还配备了WriteXml()ReadXml(),用于直接将XML写入/读取文件路径或流。

DataSet ds = new DataSet();
ds.Tables.Add(dt1); // Table 1
ds.Tables.Add(dt2); // Table 2...
...
string dsXml= ds.GetXml();
...
using (StreamWriter fs = new StreamWriter(xmlFile)) // XML File Path
{
      ds.WriteXml(fs);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接