ghx88

绑定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类会使转化过程更快更高效。

你可以点此浏览将一个XmlDocument绑定到DataGrid的范例程序。

关于作者:

Dan Wahlin著有XML for ASP.NET Developers(Sams)一书,并创办了Wahlin Consulting公司,这家公司主要致力于XML和Web Service的咨询和培训。Dan也管理XML for ASP.NET Developers网站:www.XMLforASP.NET。要了解更多信息,请访问www.xmlforasp.net/content.asp?content=dan

posted on 2006-06-14 15:04  ghx88  阅读(773)  评论(0编辑  收藏  举报

导航