我被这个问题困扰了几个小时,似乎无法解决,所以我在这里问:)
好了,我有这个功能:
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/