【问题标题】:How can I convert a DataTable to an XML file in C#?如何在 C# 中将 DataTable 转换为 XML 文件?
【发布时间】:2011-07-12 16:46:19
【问题描述】:

我想在 C# 中将 DataTable 转换为 XML 文件。我该怎么做?

【问题讨论】:

  • 我在这里发布了一个可能有帮助的答案:stackoverflow.com/questions/17868607/… 您可以准确控制 XML 的构建方式(即存储什么作为属性、命名元素、存储什么作为子元素, 等等...)。它使用XDocument,您可以使用XDocument.Save(FileName) 轻松编码以将其保存到文件中。

标签: c# .net xml xml-serialization datatable


【解决方案1】:

完成此操作的另一种方法是将数据表添加到数据集并在数据集上调用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);
}

【讨论】:

    【解决方案2】:

    你可以使用 DataTable.WriteXml 方法。

    这是一个例子;

    How can i convert my datatable into XML using C# 2.0?

    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,但我想要一种不同的方法。
    【解决方案3】:

    您可以使用writeXML 方法将其保存为XML (Source)。

    您还可以使用forum 的第五篇文章中描述的序列化/反序列化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      相关资源
      最近更新 更多