ASP.NET 2.0 中 XMLDataSource 控件简介






3.53/5 (22投票s)
2005年7月4日
4分钟阅读

267079

1445
介绍 VS.NET 2005 中 XMLDataSource 控件的常用属性和功能。
引言
XML 是一种在 Web 上存储和检索数据的重要格式,原因在于它可以跨防火墙传输。我们看到许多网站都有 RSS 和 XML 输出。许多访问者使用它们来节省时间,并加快浏览他们喜欢的网站和网络日志的速度。作为开发者,您应该知道 Visual Studio .NET 2005 通过其新的 XMLDataSource
控件,可以帮助您处理 XML 数据。
使用这个新控件,您可以轻松地在最短的时间内插入、删除和更新 XML 数据。在本文中,我将向您展示如何使用这个新控件,并描述其常用属性和功能。我将尝试在 ASP.NET 中展示这些功能,因为这个新控件更适用于 Web。
本地 XML 文件
在使用我们的新控件之前,我们需要先创建这个 XML 文件:(XMLFile.xml)
<?xml version="1.0" encoding="utf-8" ?>
<IranHistoricalPlaces>
<Place name="Taghe Bostan">
<City>Kermanshah</City>
<Antiquity>2000</Antiquity>
</Place>
<Place name="Persepolis">
<City>Shiraz</City>
<Antiquity>2500</Antiquity>
</Place>
</IranHistoricalPlaces>
现在我使用以下代码在 Repeater
控件中显示我的 XML 文件数据
<asp:Repeater ID="Repeater" runat="server" DataSourceID="XmlDataSource">
<ItemTemplate>
<Strong><%# XPath("@name") %><br /></Strong>
<%#XPath("City")%><br />
<%#XPath("Antiquity")%><br />
</ItemTemplate>
</asp:Repeater>
<asp:XmlDataSource ID="XmlDataSource" runat="server" DataFile="~/XMLFile.xml"
XPath="IranHistoricalPlaces/Place">
</asp:XmlDataSource>
在上面的代码中,我首先从工具箱将 XMLDataSource
控件添加到我的窗体,然后将其 DataFile
属性设置为 XML 文件的相对地址(~/XMLFile.xml),并将其 XPath
属性设置为 "IranHistoricalPlaces/Place"。后者指向我们想要操作其节点的 XML 文件中的所需级别。
现在我尝试设置我的 Repeater
控件以使用这个 XMLDataSource
。首先将 DataSourceID
属性设置为 "XMLDataSource
",然后尝试配置此控件以显示 XML 节点中您所需的值。我目前不想专注于格式化代码。我在 ItemTemplate
标签之间使用 XPath("Nodename")
来加载我想要的数据。如果我要加载到我的页面的是一个属性,我必须在我的 XPath
参数中使用 @ 符号加上其名称;如果是元素,我直接将其名称传递给 XPath
。
最终结果如下所示
Web 上的 XML 文件
我们不限于使用本地 XML 文件。我们可以使用 Web 上的 XML 文件在我们的 Web Forms 中显示(这也是这个新数据控件的主要应用)。
假设您想在您的 Web Form 中使用您喜欢的 RSS。我将向您展示如何做到这一点。
在您的 Web Form 中插入另一个带 DataList
控件的 XMLDataSource
控件(我更倾向于使用另一个 Web Form)。将 Datafile
属性设置为您的 XML 文件 URL(我这里使用了我的 RSS URL),然后将 DataList
控件的 DataSourceID
属性设置为 "XMLDataSource
",如下所示
<asp:XmlDataSource ID="XmlDataSource" DataFile="http://nayyeri.net/rss.aspx"
XPath="rss/channel/item" runat="server"></asp:XmlDataSource>
<asp:DataList ID="DataList" runat="server" DataSourceID="XmlDataSource">
<ItemTemplate>
<font face="tahoma" size="6"><Strong><%#XPath("title")%><br />
</Strong></font>
<%#XPath("description")%><br />
<font color="navy"><i><%#XPath("pubDate")%><br /></i></font>
</ItemTemplate>
</asp:DataList>
我想在这个 Web Form 中加载我的文章标题、描述和发布日期。因此,我将我的 XMLDataSource
的 XPath
属性设置为 "rss/channel/item"(看看我的 RSS 结构),并在 DataList
控件的 ItemTemplate
标签之间使用了 XPath
。
您可以在这里看到最终结果
关于 ItemTemplate
标签的最后一点是,您可以轻松地更改数据的格式,正如我使用 HTML
标签所做的那样。例如,在这里我将我的标题格式更改为粗体/斜体
<asp:XmlDataSource ID="XmlDataSource" DataFile="http://nayyeri.net/rss.aspx"
XPath="rss/channel/item" runat="server"></asp:XmlDataSource>
<asp:DataList ID="DataList" runat="server" DataSourceID="XmlDataSource">
<ItemTemplate>
<font face="tahoma" size="6"><Strong><I><%#XPath("title")%></I><br />
</Strong></font>
<%#XPath("description")%><br />
<font color="navy"><i><%#XPath("pubDate")%><br /></i></font>
</ItemTemplate>
</asp:DataList>
附加信息
这些是 XMLDataSource
的常见应用。您还可以使用此控件将数据保存到 XML 文件中。为此,您需要使用 XMLDataSource
控件的 Save
方法。它会将所有内存缓存的数据保存到您的 XML 文件中(如您在 DataFile
属性中所设置的)。
XMLDataSource
控件不支持排序和分页,但您可以使用内存数据结构来实现这些功能。这肯定不会有用,因为您可以为此目的使用其他数据控件。
智能标记
智能标记在 ASP.NET 2 中非常有用。因此,我将尝试在此处描述 XMLDataSource
控件的智能标记。首先看看这个智能标记的快照
使用第一个选项(配置数据源),您可以配置 XMLDataSource
的重要属性。如果打开它,您可以选择数据文件、转换文件(这是 XSL 文件,描述数据文件的结构)和 XPath 表达式。
第二个选项很简单。它只是用于刷新控件架构。
Bug
此控件有一个重要的 Bug,您可以 在此处 阅读完整故事。微软可能会在 RTM 版本中修复它。
历史
- 2005/07/05
我为 ASP.NET 2.0 Beta 2 编写了这篇文章。我将更新它以适应 RTM 版本。
- 2005/07/07
根据一条评论,我添加了“Bug”主题。我还在这篇文章中添加了“智能标记”主题。