ASP.NET 2.0 提供多種資料來源控件,XmlDataSource 通常直接指向 XML 檔案路徑。但實務上常需動態產生或從遠端載入 XML(如 RSS Feed),此時可將 XmlDocument 物件指派給 XmlDataSource.Data 屬性實現繫結。
<%@ Page Language="VB" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim doc As New System.Xml.XmlDocument
doc.Load("https://dotnet.aspx.cc/Rss.aspx")
XmlDataSource1.Data = doc.InnerXml
XmlDataSource1.XPath = "/rss/channel/item"
End Sub
</script>
<html xmlns="https://www.w3.org/1999/xhtml">
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" DataSourceID="XmlDataSource1" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="文章標題">
<ItemTemplate>
<asp:HyperLink runat="server" Target="_blank" NavigateUrl='<%# XPath("link") %>'>
<%# XPath("title") %>
</asp:HyperLink>
[<%# CType(XPath("pubDate"), DateTime).ToString("yyyy年M月d日") %>]
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:XmlDataSource ID="XmlDataSource1" runat="server"></asp:XmlDataSource>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" %>
<script runat="server">
protected void Page_Load(object sender, System.EventArgs e)
{
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load("https://dotnet.aspx.cc/Rss.aspx");
XmlDataSource1.Data = doc.InnerXml;
XmlDataSource1.XPath = "/rss/channel/item";
}
</script>
<html xmlns="https://www.w3.org/1999/xhtml">
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" DataSourceID="XmlDataSource1" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="文章標題">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" Target="_blank" NavigateUrl='<%# XPath("link") %>'>
<%# XPath("title") %>
</asp:HyperLink>
[<%# (DateTime.Parse(XPath("pubDate").ToString().Replace("GMT",""))).ToString("yyyy年M月d日") %>]
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:XmlDataSource ID="XmlDataSource1" runat="server"></asp:XmlDataSource>
</form>
</body>
</html>
此模式適用於任何動態 XML 來源:Web Service 回應、組態檔合併、記憶體產生的報表資料等,極大擴展了 XmlDataSource 的實用範圍。