如何使sql查询结果到xml文件

我有一个SQL查询,从表中选择一些数据。

ID Name Number Email 1 a 123 a@a.com 2 b 321 b@b.com 3 c 432 c@c.com 

我从表中得到这些数据。 我想从数据创建一个xml文件。 像这样

   1 a 123 a@a.com   2 b 321 b@b.com   3 c 432 c@c.com   

如何在C#和SQL Server上执行此操作?

试试这个:

 SELECT * FROM dbo.YourStudentTable FOR XML PATH('Student'), ROOT ('Students') 

这应该返回您正在寻找的XML( 假设您有SQL Server 2005或更新版本)

阅读有关如何在TechNet上使用FOR XML PATH及其function的更多信息

SQL Server :只是对@marc_s回答的补充 – 请注意xml区分大小写,并且生成的xml看起来像

   1 a 123 a@a.com   

如果你试图检索id ,你将找不到任何东西。

你可能想做这样的事情:

 select ID as id, Name as name, Number as number, Email as email from dbo.Table1 for xml path('Student'), root('Students') 

=> sql小提琴示例

C# :你可以使用WriteXml方法:

 var ds = new DataSet("Students"); var dt = ds.Tables.Add("Student"); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("number", typeof(string)); dt.Columns.Add("email", typeof(string)); dt.Rows.Add(1, "a", "123", "a@a.com"); dt.Tables[0].Rows.Add(2, "b", "321", "b@b.com"); dt.Tables[0].Rows.Add(3, "c", "432", "c@c.com"); var stream = new StringWriter(); ds.WriteXml(stream); 

或使用Linq to XML:

  new XElement("Students", dt.AsEnumerable().Select(r => new XElement("Student", new XElement("id", r["id"]), new XElement("name", r["name"]), new XElement("number", r["number"]), new XElement("email", r["email"]) ))); 

1)创建一个名为student的class级

 [Serializable] public class Student { public int ID { get; set; } public string Name { get; set; } public int Number { get; set; } public string Email { get; set; } } 

2)从数据库StudentList数据输入名为StudentList List

3)然后打开或创建xml文件并添加值

 using (XmlWriter writer = XmlWriter.Create("Student.xml")) { writer.WriteStartDocument(); writer.WriteStartElement("Students"); foreach (Student student in StudentList) { writer.WriteStartElement("Student"); writer.WriteElementString("id", student.ID.ToString()); writer.WriteElementString("name", student.Name.ToString()); writer.WriteElementString("number", student.Number.ToString()); writer.WriteElementString("email", student.Email.ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndDocument(); } 

尽管marc提供的解决方案正是您所需要的,但您可能希望深入了解文章中使用FOR XML子句将查询结果作为XML返回的各种选项。

您可以使用DataSet.GetXml()函数获取XML格式文件的结果