use*_*990 17 c# xml sql sql-server
我有一个SQL查询,从表中选择一些数据.
ID Name Number Email
1 a 123 a@a.com
2 b 321 b@b.com
3 c 432 c@c.com
Run Code Online (Sandbox Code Playgroud)
我从表中得到这些数据.我想从数据创建一个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>
Run Code Online (Sandbox Code Playgroud)
如何在C#和SQL Server上执行此操作?
mar*_*c_s 35
试试这个:
SELECT *
FROM dbo.YourStudentTable
FOR XML PATH('Student'), ROOT ('Students')
Run Code Online (Sandbox Code Playgroud)
这应该返回您正在寻找的XML(假设您有SQL Server 2005或更新版本)
阅读有关如何FOR XML PATH在TechNet上使用及其功能的更多信息
SQL Server :只是对@marc_s 答案的补充- 请注意 xml 区分大小写,生成的 xml 看起来像
<Students>
<Student>
<ID>1</ID>
<Name>a</Name>
<Number>123</Number>
<Email>a@a.com</Email>
</Student>
</Students>
Run Code Online (Sandbox Code Playgroud)
如果您尝试检索id,您将找不到任何内容。
你可能想做这样的事情:
select
ID as id,
Name as name,
Number as number,
Email as email
from dbo.Table1
for xml path('Student'), root('Students')
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
或使用 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"])
)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32491 次 |
| 最近记录: |