【简单示例:数据库表转XML】

目的:文本用来将数据库中的数据映射为XML格式的数据,并显示在页面上。

预备知识:
1)XML:

XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准

2) XSLT:

XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。

XSLT 指 XSL 转换(XSL Transformations)。
XSLT 是 XSL 中最重要的部分。
XSLT 可将一种 XML 文档转换为另外一种 XML 文档。
XSLT 使用 XPath 在 XML 文档中进行导航。
XPath 是一个 W3C 标准。

3) FOR XML AUTO 查询语句

可以使用FOR XML AUTO子句修改SQL查询,使之返回XML。

比如:

image

XML格式:

image
XML可以是来自于任何地方的数据源,例如Web服务、磁盘上的文件、从Web服务器返回的XML片段或数据库。SQL Server 2005以上版本内置了对XML数据类型的支持。而本文要做的就是从数据库中得到XML文件。

准备:Northwind.mdf数据库一个,点击这里下载。

首先,在VS下新建一个WebApplication,后台代码如下:

protected void Page_Load(object sender, EventArgs e)
{
string connStr = @"Data Source=.\sqlexpress;database=Northwind.mdf;User Id=sa;pwd=123456";
XmlDocument x
= new XmlDocument();
XPathNavigator xpathnav
= x.CreateNavigator();

using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
string sqlStr = "select * from 客户 as Customer for XML AUTO, ELEMENTS";
//for XML AUTO, ELEMENTS会提取出来文档中元素

SqlCommand command
= new SqlCommand(sqlStr, conn);

using (XmlWriter xw = xpathnav.PrependChild())
{
xw.WriteStartElement(
"Customer");
using (XmlReader xr = command.ExecuteXmlReader())
{
xw.WriteNode(xr,
true);
}
xw.WriteEndElement();
}
}

Xml1.XPathNavigator
= xpathnav;
}

然后,新建一个XSLT文件:customersToHtml.xslt
image

内容如下:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
4 <xsl:output method="html"/>
5 <xsl:template match="/">
6 <h3>List of Customers</h3>
7 <table border="1">
8 <tr>
9 <th>Company Name</th>
10 <th>Contact Name</th>
11 <th>Contact Title</th>
12 </tr>
13 <xsl:apply-templates select="//Customer"/>
14 </table>
15 </xsl:template>
16 <xsl:template match="Customer">
17 <tr>
18 <td>
19 <xsl:value-of select="公司名称"/>
20 </td>
21 <td>
22 <xsl:value-of select="联系人姓名"/>
23 </td>
24 <td>
25 <xsl:value-of select="联系人职务"/>
26 </td>
27 </tr>
28 </xsl:template>
29 </xsl:stylesheet>
30 <!-- 樊勇 2011年9月3日20:51:05 –>

在ASPX页面中需要添加一处改动的地方:

image

<asp:xml id="Xml1" runat="server" transformsource="~/customersToHtml.xslt"></asp:xml>

运行ForXmlAuto.aspx页面,可以看到效果如图:

image

posted on 2011-09-03 23:40  Frank.Fan  阅读(3890)  评论(0编辑  收藏  举报