在ASPNET中开发 XML DOM.doc
《在ASPNET中开发 XML DOM.doc》由会员分享,可在线阅读,更多相关《在ASPNET中开发 XML DOM.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在ASP.NET中开发 XML DOM摘要:介绍了在ASP.NET中开发XML DOM的常用对象类,并结合程序实例说明这些对象类的使用方法。关键词: ASP.NET DOM XML Exploring XML DOM Within ASP.NETAbstract:Introduces some classes related to XML DOM.Also, some program examples are shown to illustrate how to apply these classes.Keywords:ASP.NET DOM XML1、 简介 W3C的DOM是在计算机的内存中
2、表示XML文档的一些规格的集合。DOM是一种与平台和语言无关的接口,该接口定义了一系列对象来实现对XML文档数据的访问和和修改。它允许程序和脚本动态访问和修改文档的内容、结构和类型。DOM接口将XML文档转换为树型的文档结构。这棵对象树是XML文档内元素之间关系的反映,通过这棵树,可以访问和修改XML文档的数据。应用程序可以通过树型模型,对XML文档进行层次化的访问。文档中的信息,包括数据、数据的意义和数据的关系都由DOM接口转换为树型结构的节点和节点的关系,应用程序通过DOM可以通过对树的各种操作来实现对XML文档本身的操作。其中包括:n 遍历树的所有节点n 通过DTD或Schema检查XM
3、L文档的有效性n 访问树的节点,得到所需的节点信息。比如,节点的值,属性节点的属性值n 创建新节点。可以是元素节点、属性节点、注释节点、指令节点或文本节点n 甚至可以创建全新的XML文档Microsoft在.NET Framework中通过一些.NET类实现了W3C的 Document Object Model(DOM),这些类都位于System.xml这个名字空间。其中XmlNode类是一个非常重要的类,它代表了XML文档中的某个节点。该节点可以是XML文档的根节点,这样它就代表整个XML文档了。它是许多很有用的类的基类,这些类包括插入节点的类、删除节点的类、替换节点的类以及在XML文档中完
4、成导航功能的类。同时,XmlNode类还为程序员提供了获取双亲节点、子节点、最后一个子节点、节点名称以及节点类型等的属性。它的三个最主要的子类包括:XmlDocument、XmlDataDocument以及XmlDocumentFragment。XmlDocument类代表了一个XML文档,它提供了载入和保存XML文档的方法和属性。这些方法包括了Load、LoadXml和Save等。同时,它还提供了添加特性(Attributes)、说明(Comments)、空间(Spaces)、元素(Elements)和新节点(New Nodes)等XML项的功能。XmlDocumentFragment类代表
5、了一部分XML文档,它能被用来添加到其他的XML文档中。XmlDataDocument类可以让程序员更好地完成和ADO.NET中的数据集对象之间的互操作。另外,XPathDocument、XPathNavigator可以更高效地完成在XML文档中进行查询、导航等功能。 一个结点的第1个孩子为 ChildNodes(0), 第2个孩子为 ChildNodes(1),.以产品目录列表的XML文档为例: F10 Shimano Calcutta 47.76 F20 Bantam Lexica 49.99 第1个产品(product)元素 表示为: DocumentElement.ChildNodes
6、(0) 类似地,第2个产品的价格表示为:DocumentElement.ChildNodes(1).ChildNodes(2).InnerText。2、XmlDocument对象的使用在.NET Framework中,XmlDocument类封装了XML DOM对象模型的属性和方法,它是XML DOM对象模型中的核心类(它等价于COM组件中的MSXML DOMDocument类,两者的用法也很相似)。在.NET中,DOM的加载机制是建立在XmlReader类上的。当一个XmlDocument对象被加载时,它以一棵树的形式来组织XML文档的内容,XMLTextReader对象提供了前向的游标,而
7、XmlDocument对象则提供了对于结点的快速、直接的访问。然而,一棵DOM树的构造是依赖于缓存的,尤其是对于一个大的XML文档来讲。一旦它被加载以后,我们就可以通过多个属性和方法遍历树中的每个结点。下面是一些常用的属性和方法:DocumentElement (文档树的根元素), ChildNodes (一个结点的所有孩子), FirstChild,LastChild, HasChildNodes, ChildNodes.Count (孩子的个数), InnerText (文本格式的子树内容), Name (结点名), NodeType和 Value(文本型结点的值)等。 如果需要的话,我们
8、可以通过父子的层次关系来访问一个结点。我们给出一例,实现通过XML DOM实现产品信息的选择。考察一下加载 XmlDocument (DOM树)的过程。有多种方法来加载 XML Document 对象,我们将使用XmlTextReader对象来加载。Private Sub Page_Load(s As Object, e As EventArgs) If Not Page.IsPostBack Then Dim myDoc As New XmlDocument() Dim myRdr As New XmlTextReader(Server.MapPath(Catalog2.xml) myRdr
9、.WhitespaceHandling = WhitespaceHandling.None myDoc.Load(myRdr) Session(sessionDoc) = myDoc Put it in a session variable一旦一棵树被加载,就可以把ProductName结点的InnerText属性放在一个列表框中。For i = 0 To myDoc.DocumentElement.ChildNodes.Count - 1 lstProducts.Items.Add _ (myDoc.DocumentElement.ChildNodes(i).ChildNodes(1).In
10、nerText)Next i myRdr.Close()接下来,查询一个选定产品的价格。在” Show Price”按钮 的click事件中,我们通过一个session变量检索一棵树,直接访问 Price结点。Private Sub showPrice(s As Object, e As EventArgs) Dim i As Integer Dim qty As Integer = 1 Dim price As Double Dim myDoc As New XmlDocument() myDoc = Session(sessionDoc) i = lstProducts.SelectedI
11、ndex The Row number selected qty = Integer.Parse(txtQty.Text) price = Double.Parse _ (myDoc.DocumentElement.ChildNodes(i).ChildNodes(2).InnerText) lblPrice.Text = FormatCurrency(price)www. lblAmount.Text = FormatCurrency(qty * price)End Sub3、使用 XmlDocument对象解析XML文档一棵树是由结点组成的。从本质上讲,一个结点也是一棵树,因为它也包含了所
12、有的下级结点。底层结点没有任何孩子,因此,它最可能是一个文本类型的结点。我们将采用一个VB.NET的递归过程来遍历一棵树,通过遍历DOM树来显示包含在每个结点中的信息。我们将写两个过程:1. DisplayNode(node As XmlNode) 它将接收一个结点(node)并检验它是否是一个终端结点,如果它是一个终端结点, 这个过程将显示它的内容,如果不是终端结点,过程将查看它是否有属性,如果有属性,将显示属性的值。2. TravelDownATree(tree As XmlNode) 它接收一棵树( tree),先调用DisplayNode过程,然后把接收到的树的子树传递给自己。这是一个
13、递归的过程,因此,它将探测到接收到的树的所有结点。Sub Page_Load(s As Object, e As EventArgs)If Not Page.IsPostBack Then Dim myXmlDoc As New XmlDocument() Dim myRdr As New XmlTextReader(Server.MapPath(Catalog2.xml) myRdr.WhitespaceHandling = WhitespaceHandling.None myXmlDoc.Load (myRdr) TravelDownATree(myXmlDoc.DocumentEleme
14、nt) myRdr.Close()End IfEnd SubSub TravelDownATree(tree As XMLNode) If Not IsNothing(tree) Then DisplayNode(tree) End If If tree.HasChildNodes Then tree = tree.FirstChild While Not IsNothing(tree) TravelDownATree(tree) /Call itself and pass the subtree tree = tree.NextSibling End While End IfEnd SubS
15、ub DisplayNode(node As XmlNode) If Not node.HasChildNodes Thenww.sResponse.Write( Name= + node.Name + Type= _ + node.NodeType.ToString()+ Value= +node.Value +) Else Response.Write(Name= + node.Name + Type= _ + node.NodeType.ToString() + ) If node.NodeType = XmlNodeType.Element Then Dim x As XmlAttri
16、bute For each x In node.Attributes Response.Write(Name= + x.Name + Type = _ + x.NodeType.ToString()+ Value = +x.Value +) Next End If End IfEnd Sub4、使用XmlDataDocument 类 XmlDataDocument类是XmlDocument类的扩展。它在很多方面同XmlDocument类相似。XmlDataDocument对象最具特色的地方是它对同一数据提供了两种视图: “XML视图”和”关系视图”。 XmlDataDocument有一个 Da
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在ASPNET中开发 XML DOM ASPNET 开发
限制150内