65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET 2.0 中 XMLDataSource 控件简介

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.53/5 (22投票s)

2005年7月4日

4分钟阅读

viewsIcon

267079

downloadIcon

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 中加载我的文章标题、描述和发布日期。因此,我将我的 XMLDataSourceXPath 属性设置为 "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”主题。我还在这篇文章中添加了“智能标记”主题。

© . All rights reserved.