XmlDataSource 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示数据绑定控件的 XML 数据源。
public ref class XmlDataSource : System::Web::UI::HierarchicalDataSourceControl, System::ComponentModel::IListSource, System::Web::UI::IDataSource
[System.Drawing.ToolboxBitmap(typeof(System.Web.UI.WebControls.XmlDataSource))]
public class XmlDataSource : System.Web.UI.HierarchicalDataSourceControl, System.ComponentModel.IListSource, System.Web.UI.IDataSource
[<System.Drawing.ToolboxBitmap(typeof(System.Web.UI.WebControls.XmlDataSource))>]
type XmlDataSource = class
inherit HierarchicalDataSourceControl
interface IDataSource
interface IListSource
Public Class XmlDataSource
Inherits HierarchicalDataSourceControl
Implements IDataSource, IListSource
- 继承
- 属性
- 实现
示例
本部分包含两个代码示例。 第一个 XmlDataSource 代码示例演示如何将控件与 控件配合使用 TreeView 来显示示例 XML 文件中的 XML 数据。 第二个 XmlDataSource 示例演示如何将控件与模板化 Repeater 控件配合使用来显示 XML 数据。
下面的代码示例演示如何将 XmlDataSource 控件与 控件配合使用 TreeView 来显示 XML 数据。 从 XmlDataSource 由 DataFile 属性标识的 XML 文件加载 XML 数据。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:xmldatasource
id="XmlDataSource1"
runat="server"
datafile="books.xml" />
<!- TreeView uses hierachical data, so the
XmlDataSource uses an XmlHierarchicalDataSourceView
when a TreeView is bound to it. -->
<asp:TreeView
id="TreeView1"
runat="server"
datasourceid="XmlDataSource1">
<databindings>
<asp:treenodebinding datamember="book" textfield="title"/>
</databindings>
</asp:TreeView>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:xmldatasource
id="XmlDataSource1"
runat="server"
datafile="books.xml" />
<!- TreeView uses hierachical data, so the
XmlDataSource uses an XmlHierarchicalDataSourceView
when a TreeView is bound to it. -->
<asp:TreeView
id="TreeView1"
runat="server"
datasourceid="XmlDataSource1">
<databindings>
<asp:treenodebinding datamember="book" textfield="title"/>
</databindings>
</asp:TreeView>
</form>
</body>
</html>
代码示例中的 XML 文件具有以下数据:
<books>
<computerbooks>
<book title="Secrets of Silicon Valley" author="Sheryl Hunter"/>
<book title="Straight Talk About Computers" author="Dean Straight"/>
<book title="You Can Combat Computer Stress!" author="Marjorie Green"/>
</computerbooks>
<cookbooks>
<book title="Silicon Valley Gastronomic Treats" author="Innes del Castill"/>
</cookbooks>
</books>
下面的代码示例演示如何将 XmlDataSource 控件与模板化 Repeater 控件配合使用来显示 XML 数据。 控件 Repeater 使用 XPath 数据绑定表达式绑定到 所表示的 XML 文档中 XmlDataSource 的数据项。 有关 和数据XPathSelect
绑定语法的详细信息XPath
,请参阅 XPathBinder 类。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Order</title>
</head>
<body>
<form id="form1" runat="server">
<asp:XmlDataSource
runat="server"
id="XmlDataSource1"
XPath="orders/order"
DataFile="order.xml" />
<asp:Repeater ID="Repeater1"
runat="server"
DataSourceID="XmlDataSource1">
<ItemTemplate>
<h2>Order</h2>
<table>
<tr>
<td>Customer</td>
<td><%#XPath("customer/@id")%></td>
<td><%#XPath("customername/firstn")%></td>
<td><%#XPath("customername/lastn")%></td>
</tr>
<tr>
<td>Ship To</td>
<td><%#XPath("shipaddress/address1")%></font></td>
<td><%#XPath("shipaddress/city")%></td>
<td><%#XPath("shipaddress/state")%>,
<%#XPath("shipaddress/zip")%></td>
</tr>
</table>
<h3>Order Summary</h3>
<asp:Repeater ID="Repeater2"
DataSource='<%#XPathSelect("summary/item")%>'
runat="server">
<ItemTemplate>
<b><%#XPath("@dept")%></b> -
<%#XPath(".")%><br />
</ItemTemplate>
</asp:Repeater>
<hr />
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Order</title>
</head>
<body>
<form id="form1" runat="server">
<asp:XmlDataSource
runat="server"
id="XmlDataSource1"
XPath="orders/order"
DataFile="order.xml" />
<asp:Repeater ID="Repeater1"
runat="server"
DataSourceID="XmlDataSource1">
<ItemTemplate>
<h2>Order</h2>
<table>
<tr>
<td>Customer</td>
<td><%#XPath("customer/@id")%></td>
<td><%#XPath("customername/firstn")%></td>
<td><%#XPath("customername/lastn")%></td>
</tr>
<tr>
<td>Ship To</td>
<td><%#XPath("shipaddress/address1")%></font></td>
<td><%#XPath("shipaddress/city")%></td>
<td><%#XPath("shipaddress/state")%>,
<%#XPath("shipaddress/zip")%></td>
</tr>
</table>
<h3>Order Summary</h3>
<asp:Repeater ID="Repeater2"
DataSource='<%#XPathSelect("summary/item")%>'
runat="server">
<ItemTemplate>
<b><%#XPath("@dept")%></b> -
<%#XPath(".")%><br />
</ItemTemplate>
</asp:Repeater>
<hr />
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>
代码示例中的 XML 文件具有以下数据:
<?xml version="1.0" encoding="iso-8859-1"?>
<orders>
<order>
<customer id="12345" />
<customername>
<firstn>John</firstn>
<lastn>Smith</lastn>
</customername>
<transaction id="12345" />
<shipaddress>
<address1>1234 Tenth Avenue</address1>
<city>Bellevue</city>
<state>Washington</state>
<zip>98001</zip>
</shipaddress>
<summary>
<item dept="tools">screwdriver</item>
<item dept="tools">hammer</item>
<item dept="plumbing">fixture</item>
</summary>
</order>
</orders>
注解
本主题内容:
介绍
控件 XmlDataSource 是一个数据源控件,用于向数据绑定控件显示 XML 数据。 数据绑定控件可以使用该 XmlDataSource 控件来显示分层数据和表格数据。 控件 XmlDataSource 通常用于在只读方案中显示分层 XML 数据。 由于 控件 XmlDataSource 扩展 HierarchicalDataSourceControl 类,因此它适用于分层数据。 控件 XmlDataSource 还实现 IDataSource 接口,并处理表格或列表样式的数据。
注意
出于安全目的,没有 XmlDataSource 控件属性存储在视图状态中。 由于在技术上可以解码客户端上的视图状态的内容,因此存储有关数据结构或其内容的敏感信息可能会使你面临信息泄露威胁。 请注意,如果需要将属性等XPath信息存储在视图状态中,可以通过在 指令上@ Page
设置ViewStateEncryptionMode来启用加密来保护内容。
页面开发人员使用 XmlDataSource 控件通过数据绑定控件显示 XML 数据。
XML 数据的源
XmlDataSource通常从 XML 文件(由 DataFile 属性指定)加载 XML 数据。 XML 数据还可以由数据源控件使用 Data 属性以字符串形式直接存储。 如果要在 XML 数据由数据绑定控件显示之前对其进行转换,可以为转换提供可扩展样式表语言 (XSL) 样式表。 与 XML 数据一样,通常从 文件加载样式表(由 TransformFile 属性指示),但也可以直接使用 Transform 属性以字符串形式存储样式表。
更新 XML 数据
控件 XmlDataSource 通常用于只读数据方案,其中数据绑定控件显示 XML 数据。 但是,也可以使用 XmlDataSource 控件编辑 XML 数据。 若要编辑 XML 数据,请调用 GetXmlDocument 方法来检索 XmlDataDocument 作为 XML 数据的内存中表示形式的对象。 可以使用由 及其XmlNode包含的对象公开XmlDataDocument的对象模型,或使用 XPath 筛选表达式操作文档中的数据。 更改 XML 数据的内存中表示形式后,可以通过调用 Save 方法将其保存到磁盘。
控件的编辑功能 XmlDataSource 存在一些限制:
XML 数据必须从 属性指示 DataFile 的 XML 文件中加载,而不是从 属性中指定的 Data 内联 XML 加载。
不能在 或 TransformFile 属性中Transform指定 XSLT 转换。
方法 Save 不处理不同请求的并发保存操作。 如果多个用户通过 XmlDataSource编辑 XML 文件,则不能保证所有用户都使用相同的数据进行操作。 操作也可能 Save 由于这些相同的并发问题而失败。
指定 XSL 转换
使用 XML 数据执行的常见操作是将其从一个 XML 数据集转换为另一个 XML 数据集。 控件 XmlDataSource 支持具有 Transform 和 TransformFile 属性的 XML 转换,这些属性指定要在将 XML 数据传递到数据绑定控件之前应用于 XML 数据的 XSL 样式表,以及 TransformArgumentList 属性,该属性使您能够在转换期间提供 XSL 样式表要使用的动态 XSLT 样式表参数。 如果使用 属性指定 XPath 筛选表达式 XPath ,则会在转换发生后应用该表达式。
注意
类 XmlDataSource 使用已弃用 XslTransform 的 类来执行 XSL 转换。 如果要使用在类弃用后引入的 XslTransform 样式表功能,请使用 类手动 XslCompiledTransform 应用转换。
使用 XPath 表达式进行筛选
默认情况下, XmlDataSource 控件加载由 DataFile 属性标识或内联在 属性中找到 Data 的 XML 文件中的所有 XML 数据,但您可以使用 XPath 表达式筛选数据。 属性 XPath 支持在加载和转换 XML 数据后应用的 XPath 语法筛选器。
缓存
出于性能目的,默认情况下为 XmlDataSource 控件启用缓存。 每次请求页面时在服务器上打开和读取 XML 文件可能会降低应用程序的性能。 缓存可减少服务器上的处理负载,但代价是 Web 服务器上的内存;在大多数情况下,这是一个很好的权衡。
XmlDataSource当 属性设置为 true
时EnableCaching,会自动缓存数据,CacheDuration并将 属性设置为缓存在缓存失效前存储数据的秒数。 可以使用 CacheExpirationPolicy 进一步微调数据源控件的缓存行为。
其他功能
下表列出了 控件支持 XmlDataSource 的其他功能。
功能 | 说明 |
---|---|
排序 | 控件 XmlDataSource 不支持。 |
Filtering | 属性 XPath 可用于使用适当的 XPath 表达式筛选 XML 数据。 |
分页 | 控件 XmlDataSource 不支持。 |
更新 | 通过直接操作 XmlDataDocument 然后调用 方法来支持 Save 。 |
正在删除 | 通过直接操作 XmlDataDocument 然后调用 方法来支持 Save 。 |
插入 | 通过直接操作 XmlDataDocument 然后调用 方法来支持 Save 。 |
缓存 | 默认情况下启用, CacheDuration 属性设置为 0 (无限) , CacheExpirationPolicy 属性设置为 Absolute。 |
数据视图对象
由于 控件 XmlDataSource 支持显示分层数据的数据绑定控件以及显示表格数据的控件,因此数据源控件支持对其基础 XML 数据使用多种类型的数据源视图对象。 与显示表格数据的数据绑定控件一起使用时,该 XmlDataSource 控件将检索单个命名 XmlDataSourceView 对象。 方法 GetViewNames 标识此单个命名视图。 与显示分层数据的数据绑定控件一起使用时,该 XmlDataSource 控件 XmlHierarchicalDataSourceView 检索传递给 方法的任何唯一分层路径的 GetHierarchicalView 。
声明性语法
<asp:XmlDataSource
CacheDuration="string|Infinite"
CacheExpirationPolicy="Absolute|Sliding"
CacheKeyDependency="string"
DataFile="string"
EnableCaching="True|False"
EnableTheming="True|False"
EnableViewState="True|False"
ID="string"
OnDataBinding="DataBinding event handler"
OnDisposed="Disposed event handler"
OnInit="Init event handler"
OnLoad="Load event handler"
OnPreRender="PreRender event handler"
OnTransforming="Transforming event handler"
OnUnload="Unload event handler"
runat="server"
SkinID="string"
TransformArgumentList="string"
TransformFile="string"
Visible="True|False"
XPath="string"
>
<Data>string</Data>
<Transform>string</Transform>
</asp:XmlDataSource>
构造函数
XmlDataSource() |
创建 XmlDataSource 类的新实例。 |
属性
Adapter |
获取控件的浏览器特定适配器。 (继承自 Control) |
AppRelativeTemplateSourceDirectory |
获取或设置包含该控件的 Page 或 UserControl 对象的应用程序相对虚拟目录。 (继承自 Control) |
BindingContainer |
获取包含该控件的数据绑定的控件。 (继承自 Control) |
CacheDuration |
获取或设置数据源控件检索到的数据的缓存时间长度(以秒为单位)。 |
CacheExpirationPolicy |
获取或设置缓存过期策略,当它与缓存持续时间组合使用时,可以描述数据源控件所使用的缓存的缓存行为。 |
CacheKeyContext |
从视图状态获取或设置数据源控件的缓存键的值,或向视图状态添加缓存键。 |
CacheKeyDependency |
获取或设置用户定义的键依赖项,该依赖项链接到数据源控件创建的所有数据缓存对象。 密钥过期后,所有的缓存对象都会显式过期。 |
ChildControlsCreated |
获取一个值,该值指示是否已创建服务器控件的子控件。 (继承自 Control) |
ClientID |
获取由 ASP.NET 生成的服务器控件标识符。 (继承自 HierarchicalDataSourceControl) |
ClientIDMode |
此属性不用于数据源控件。 (继承自 HierarchicalDataSourceControl) |
ClientIDSeparator |
获取一个字符值,该值表示 ClientID 属性中使用的分隔符字符。 (继承自 Control) |
Context |
为当前 Web 请求获取与服务器控件关联的 HttpContext 对象。 (继承自 Control) |
Controls |
获取 ControlCollection 对象,该对象表示 UI 层次结构中的指定服务器控件的子控件。 (继承自 HierarchicalDataSourceControl) |
Data |
获取或设置数据源控件绑定到的 XML 数据块。 |
DataFile |
指定绑定数据源的 XML 文件的文件名。 |
DataItemContainer |
如果命名容器实现 IDataItemContainer,则获取对命名容器的引用。 (继承自 Control) |
DataKeysContainer |
如果命名容器实现 IDataKeysControl,则获取对命名容器的引用。 (继承自 Control) |
DesignMode |
获取一个值,该值指示是否正在使用设计图面上的一个控件。 (继承自 Control) |
EnableCaching |
获取或设置一个值,该值指示 XmlDataSource 控件是否启用数据缓存。 |
EnableTheming |
获取一个值,该值指示此控件是否支持主题。 (继承自 HierarchicalDataSourceControl) |
EnableViewState |
获取或设置一个值,该值指示服务器控件是否向发出请求的客户端保持自己的视图状态以及它所包含的任何子控件的视图状态。 (继承自 Control) |
Events |
获取控件的事件处理程序委托列表。 此属性为只读。 (继承自 Control) |
HasChildViewState |
获取一个值,该值指示当前服务器控件的子控件是否具有任何已保存的视图状态设置。 (继承自 Control) |
ID |
获取或设置分配给服务器控件的编程标识符。 (继承自 Control) |
IdSeparator |
获取用于分隔控件标识符的字符。 (继承自 Control) |
IsChildControlStateCleared |
获取一个值,该值指示该控件中包含的控件是否具有控件状态。 (继承自 Control) |
IsTrackingViewState |
获取一个值,用于指示服务器控件是否会将更改保存到其视图状态中。 (继承自 Control) |
IsViewStateEnabled |
获取一个值,该值指示是否为该控件启用了视图状态。 (继承自 Control) |
LoadViewStateByID |
获取一个值,该值指示控件是否通过 ID 而不是索引参与加载其视图状态。 (继承自 Control) |
NamingContainer |
获取对服务器控件的命名容器的引用,此引用创建唯一的命名空间,以区分具有相同 ID 属性值的服务器控件。 (继承自 Control) |
Page |
获取对包含服务器控件的 Page 实例的引用。 (继承自 Control) |
Parent |
获取对页 UI 层次结构中服务器控件的父控件的引用。 (继承自 Control) |
RenderingCompatibility |
获取一个值,该值指定呈现的 HTML 将与之兼容的 ASP.NET 版本。 (继承自 Control) |
Site |
获取容器信息,该容器在呈现于设计图面上时承载当前控件。 (继承自 Control) |
SkinID |
获取或设置应用于 HierarchicalDataSourceControl 控件的外观。 (继承自 HierarchicalDataSourceControl) |
TemplateControl |
获取或设置对包含该控件的模板的引用。 (继承自 Control) |
TemplateSourceDirectory |
获取包含当前服务器控件的 Page 或 UserControl 的虚拟目录。 (继承自 Control) |
Transform |
获取或设置可扩展样式表语言 (XSL) 数据块,该数据块定义要对 XmlDataSource 控件管理的 XML 数据执行的 XSLT 转换。 |
TransformArgumentList |
提供在 Transform 或 TransformFile 属性定义的样式表中使用(用来对 XML 数据执行转换)的 XSLT 参数的列表。 |
TransformFile |
指定可扩展样式表语言 (XSL) 文件 (.xsl) 的文件名,该文件定义要对 XmlDataSource 控件管理的 XML 数据执行的 XSLT 转换。 |
UniqueID |
获取服务器控件的唯一的、以分层形式限定的标识符。 (继承自 Control) |
ValidateRequestMode |
获取或设置指示控件是否检查来自浏览器的客户端输入是否具有潜在危险值的值。 (继承自 Control) |
ViewState |
获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。 (继承自 Control) |
ViewStateIgnoresCase |
获取一个值,该值指示 StateBag 对象是否不区分大小写。 (继承自 Control) |
ViewStateMode |
获取或设置此控件的视图状态模式。 (继承自 Control) |
Visible |
获取或设置一个值,该值指示是否以可视化方式显示控件。 (继承自 HierarchicalDataSourceControl) |
XPath |
指定 XPath 表达式,该表达式将应用于 Data 属性所包含的 XML 数据或 DataFile 属性指示的 XML 文件所包含的 XML 数据。 |
方法
事件
DataBinding |
当服务器控件绑定到数据源时发生。 (继承自 Control) |
Disposed |
当从内存释放服务器控件时发生,这是请求 ASP.NET 页时服务器控件生存期的最后阶段。 (继承自 Control) |
Init |
当服务器控件初始化时发生;初始化是控件生存期的第一步。 (继承自 Control) |
Load |
当服务器控件加载到 Page 对象中时发生。 (继承自 Control) |
PreRender |
在加载 Control 对象之后、呈现之前发生。 (继承自 Control) |
Transforming |
将由 Transform 属性定义或由 TransformFile 属性标识的样式表应用到 XML 数据前发生。 |
Unload |
当服务器控件从内存中卸载时发生。 (继承自 Control) |
显式接口实现
扩展方法
FindDataSourceControl(Control) |
返回与指定控件的数据控件关联的数据源。 |
FindFieldTemplate(Control, String) |
返回指定控件的命名容器中指定列的字段模板。 |
FindMetaTable(Control) |
返回包含数据控件的元表对象。 |
GetDefaultValues(IDataSource) |
为指定数据源获取默认值的集合。 |
GetMetaTable(IDataSource) |
获取指定数据源对象中表的元数据。 |
TryGetMetaTable(IDataSource, MetaTable) |
确定表元数据是否可用。 |