[英]How to make sql query result to xml file
我有一個SQL查詢,從表中選擇一些數據。
ID Name Number Email
1 a 123 a@a.com
2 b 321 b@b.com
3 c 432 c@c.com
我從表中得到這些數據。 我想從數據創建一個xml文件。 像這樣
<Students>
<Student>
<id>1</id>
<name>a</name>
<number>123</number>
<email>a@a.com</email>
</Student>
<Student>
<id>2</id>
<name>b</name>
<number>321</number>
<email>b@b.com</email>
</Student>
<Student>
<id>3</id>
<name>c</name>
<number>432</number>
<email>c@c.com</email>
</Student>
</Students>
如何在C#和SQL Server上執行此操作?
試試這個:
SELECT *
FROM dbo.YourStudentTable
FOR XML PATH('Student'), ROOT ('Students')
這應該返回您正在尋找的XML( 假設您有SQL Server 2005或更新版本)
SQL Server :只是對@marc_s回答的補充 - 請注意,xml區分大小寫,並且生成的xml看起來像
<Students>
<Student>
<ID>1</ID>
<Name>a</Name>
<Number>123</Number>
<Email>a@a.com</Email>
</Student>
</Students>
如果你試圖檢索id
,你將找不到任何東西。
你可能想做這樣的事情:
select
ID as id,
Name as name,
Number as number,
Email as email
from dbo.Table1
for xml path('Student'), root('Students')
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的班級
[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();
}
您可以使用DataSet.GetXml()
函數獲取XML格式文件的結果
雖然marc提供的解決方案正是您所需要的,但您可能希望深入了解文章中使用FOR XML子句將查詢結果作為XML返回的各種選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.