绑定XmlDocument对象
将一个XmlDocument对象绑定到DataSet中以便将它绑定到控件上。
by Dan Wahlin
数据绑定是.NET平台上的一个强大功能,它能使你将不同的数据源绑定到DataGrid、DataList和Repeater控件上。将DataTable、ArrayList或者Hashtable这类数据源绑定到控件上是非常容易的,但你可能经常需要将它们绑定到一个XmlDocument上。这种情况尤其体现在你使用的组件返回的是一个XmlDocument而不是来自某个方法的一个DataSet时。
虽然由于XmlDocument对象不支持IList等接口而使你无法直接将它绑定到控件上,但是实现绑定并不复杂。事实上,你只需编写几行代码便可将它绑定到一个DataSet中,然后通过DataSet将它绑定到其他控件上。
它的诀窍在于使用了System.Xml命名空间下的XmlNodeReader类。这个特定的类是从XmlReader中继承而来的,而且它能够将XmlDocument导入到一个DataSet的ReadXml()方法中。之后你便可以将这个DataSet绑定到各类控件中了。XmlNodeReader负责将XML数据从XmlDocument中的某个特定节点中导出来。数据流开始的节点会被输送到XmlNodeReader的构造器中:
[C#] public XmlNodeReader(
XmlNode node
);
[VB.NET]
Public Sub New( _
ByVal node As XmlNode _
)
XmlDocument的根元素(引用自DocumentElement属性)可以被传入XmlNodeReader的构造器中以防整个XmlDocument需要被转化为XML数据流。以下代码说明如何通过XmlNodeReader类来将一个XmlDocument转化为一个DataSet(DataSet中的一个DataTable会被绑定到一个DataGrid服务器控件中):
[C#]
private void Page_Load(object sender,
System.EventArgs e) {
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("Orders.xml"));
XmlNodeReader reader = new XmlNodeReader(doc);
DataSet ds = new DataSet();
ds.ReadXml(reader);
reader.Close();
dg.DataSource = ds.Tables[0].DefaultView;
dg.DataBind();
}
[VB.NET]
Private Sub Page_Load(sender As Object, e _
As System.EventArgs)
Dim doc As New XmlDocument()
doc.Load(Server.MapPath("Orders.xml"))
Dim reader As New XmlNodeReader(doc)
Dim ds As New DataSet()
ds.ReadXml(reader)
reader.Close()
dg.DataSource = ds.Tables(0).DefaultView
dg.DataBind()
End Sub
虽然前面代码中所显示的XmlDocument对象是手动创建的,但事实上从一个方法中返回的对象是很容易实现绑定的。
将XmlDocument对象转化成DataSet的方法不止一个,但使用XmlNodeReader类会使转化过程更快更高效。
关于作者:
![]() |
|
|

浙公网安备 33010602011771号