使用 XSL 转换和 ASP.NET XML 控件将 XML 数据呈现为 HTML





5.00/5 (7投票s)
本文讨论了如何在 ASP.NET 应用程序中呈现 XML 数据。我们将了解如何使用 XSLT 转换来完成这项工作。
介绍
本文讨论了如何在 ASP.NET 应用程序中呈现 XML 数据。我们将了解如何使用 XSLT 转换来完成这项工作。
背景
在我们的 ASP.NET 应用程序中,有很多情况需要处理 XML
数据。 当我们需要处理 XML
数据并显示它们时,我们有两种方法可以做到这一点。 第一种方法包括在代码中处理 XML
数据,然后解析 XML
并将数据提取到 DataTables 中,然后将此 DataTables
用作任何 ASP.NET 服务器控件的 DataSource
。
上述技术不仅效率低下,而且容易出错,因为开发人员必须通过编写代码从 XML
中提取数据,然后填充 DataTable
。如果我们要接收的数据超过 2 个维度,即以 XML
形式提供的多个表,那么仅为了表示而处理 XML
数据的这种方式有时会变得非常麻烦。 这仍然是一种完全可行的处理此数据的方法,但是我们编写的所有代码都只是为了显示数据而过度处理。
另一种方法,也是推荐的方法,是如果使用 XSLT
转换仅用于表示目的来处理 XML
数据。 在这种方法中,我们需要做的是根据我们的表示要求定义一个 XSLT
,然后简单地将该 XSLT
应用于我们的 XML
,我们得到的是准备呈现给用户的 HTML
。
在本文中,我们将看到如何使用 XSLT
来处理 XML
并以所需的格式显示数据。
使用代码
让我们创建一个小应用程序,该应用程序将在网页上显示一个简单的 XML
数据。 该 XML
包含一些人的联系信息,我们需要以表格网格格式向用户显示此数据。 让我们首先看一下示例 XML
。
<?xml version="1.0" encoding="utf-8" ?> <Contacts> <Contact> <Name>Sample Name 1</Name> <MobileNumber>111111111</MobileNumber> <email>sample@one.com</email> <address>Sample Address 1</address> </Contact> <Contact> <Name>Sample Name 2</Name> <MobileNumber>222222222</MobileNumber> <email>sample@two.com</email> <address>Sample Address 2</address> </Contact> </Contacts>
现在,让我们决定我们希望以哪种格式向用户显示数据。

现在,让我们编写 XSL
来处理给定的 XML
文档并以所需的格式显示它。
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <table width="500px" border="1px" style="text-align:left;border-collapse:collapse"> <tr backcolor="blue"> <td> <strong>Name</strong> </td> <td> <strong> Mobile Number </strong> </td> <td> <strong> eMail ID </strong> </td> <td> <strong> Address </strong> </td> </tr> <xsl:for-each select="Contacts/Contact"> <tr> <td> <xsl:value-of select="Name"/> </td> <td> <xsl:value-of select="MobileNumber"/> </td> <td> <xsl:value-of select="email"/> </td> <td> <xsl:value-of select="address"/> </td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
注意: 要了解 XSLT
的所有详细信息,建议学习 w3schools 教程。
现在我们有了 XML
和 XSL
文件。 我们如何在网页上显示此内容。 可以使用 ASP.NET XML
服务器控件在网页上显示此内容。 我们可以将此服务器控件放置在页面上的任何位置。

之后,从代码隐藏中,我们需要将 DocumentContent
属性设置为需要显示的 XML 内容。 然后,我们可以设置此 XML
控件的 TransformSource
属性,以指定应用于从此 XML
生成 XHTML
的 XSL
。 完成此操作后,生成的页面将以我们在 XSL
文件中指定的格式显示 XML
数据。
protected void Page_Load(object sender, EventArgs e)
{
// this is being read from the same folder as this page is in.(only for demo purpose)
// In real applications this xml might be coming from some external source or database.
string xmlString = File.ReadAllText(Server.MapPath(@".\SampleData.XML"));
// Define the contents of the XML control
xmlContacts.DocumentContent = xmlString;
// Specify the XSL file to be used for transformation.
xmlContacts.TransformSource = Server.MapPath(@".\Contacts.xsl");
}
现在,当我们运行该页面时,我们可以看到 XML
数据以我们在 XSL
文件中指定的格式可见。

看点
我来自系统软件开发和 C++ 的背景,以前没有机会使用 XSL 转换在 ASP.NET 应用程序中显示 XML 数据。 我过去常常以困难的方式来做,即将 XML 数据放入断开连接的数据类中,然后将它们用作任何 ASP.NET 服务器控件的 DataSource。 最近,我才有机会处理大量以 XML 格式提供的数据。 而且数据还有超过 2 个维度。 为了解决这个问题,我使用了这种显示数据的方法。 由于我已经准备好了应用程序的 DataTable 版本,因此我可以看到使用此方法可以明显提高性能(因为服务器端处理量已大大减少)。
大多数经验丰富的程序员已经知道这些东西。 本文是为初学者准备的。 我希望这有帮助。
历史
- 2012 年 10 月 3 日:第一个版本