我被这个问题困扰了几个小时,似乎无法解决,所以我在这里问:)

好了,我有这个功能:

private void XmlDump()
{
    XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
    XElement rootElement = new XElement("dump");
    rootElement.Add(TableToX("Support"));

    string connectionString = ConfigurationManager.ConnectionStrings["MyDb"].ConnectionString;
    SqlConnection con = new SqlConnection(connectionString);
    string sql = "select * from support";
    SqlDataAdapter da = new SqlDataAdapter(sql, con);

    DataSet ds = new DataSet("Test");
    da.Fill(ds, "support");

    // Convert dataset to XML here

    var docresult = // Converted XML

    Response.Write(docResult);
    Response.ContentType = "text/xml; charset=utf-8";
    Response.AddHeader("Content-Disposition", "attachment; filename=test.xml");
    Response.End();
}

我一直在尝试各种不同的方法,但是我总是遇到错误,因此我将如何将DataSet转换为XML部件留为空白。

另外,此查询包含带有特殊字符的列。

最佳答案

您可以使用ds.WriteXml,但这将需要您具有Stream才能将输出放入其中。如果要以字符串形式输出,请尝试以下扩展方法:

public static class Extensions
{
    public static string ToXml(this DataSet ds)
    {
        using (var memoryStream = new MemoryStream())
        {
            using (TextWriter streamWriter = new StreamWriter(memoryStream))
            {
                var xmlSerializer = new XmlSerializer(typeof(DataSet));
                xmlSerializer.Serialize(streamWriter, ds);
                return Encoding.UTF8.GetString(memoryStream.ToArray());
            }
        }
    }
}

用法:
var xmlString = ds.ToXml();
// OR
Response.Write(ds.ToXml());

关于c# - 将数据集转换为XML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8384014/

10-09 04:39