欢迎访问有用文档网!

当前位置: 有用文档网 > 作文大全 >

基于.NET的XML数据的处理与实现

| 浏览次数:

摘要:针对当前XML技术已经成为Web上交换和表述数据的应用标准,同时XML是微软.NET战略的一个重要组成部分,是XML Web服务的基石,在分析XML Schema、解析技术及其与数据库关系的基础上,该文提出了使用DOM和流两种方式遍历XML信息及添加、删除、查询和修改等操作,同时完成了XML文档和数据库的互导。

关键词:XML; XML Schema; 解析技术; DOM; 数据库

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)23-5574-04

The Processing and Implementation of XML Data Based on .NET

ZHAO Yan-fei

(Ningbo Dahongying University, Ningbo 315175, China)

Abstract: For the current XML technology has become the applied standards of the exchange and presentation of data on the Web, XML is an important component of the Microsoft .NET strategy. It is the cornerstone of XML Web services, on the basis of the analysis of XML Schema, analysis technology and its relationship with the database, the paper proposed traversing, adding, deleting, selecting and modifying information of XML document through the use of DOM and XML streams. At the same time, it has transformed XML document into database mutually.

Key words: XML; XML Schema; resolution technology; DOM; database

随着互联网的迅速发展,尤其是Web技术的广泛应用,网上飞速流转的信息越来越庞杂,越来越混乱。当前在Internet上大行其道的是超文本标记语言(Hyper Text Markup Language,HTML),HTML尽管在人机界面方面非常擅长,但是它却不利于机器之间的相互交流和信息的传递。HTML中的标记大多是设计用来呈现网页上信息的布局和外观的,即是用来显示数据的。而可扩展标记语言(eXtensible Markup Language,XML)的目标是在网络上以类似HTML的方式实现SGML的发送、接收和处理[1]。由于XML具有跨平台,简单易用,可扩展性, 自描述性,依赖于内容等特性,XML已经成为Internet上数据存储、交换和传输的主要工具[2],是当前处理结构化文档信息的有力工具。XML数据量的不断增长,要求更有效的数据管理能力和更快、更精确的查询。XML是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。

1969年,Microsoft开发出了作为基本原理的.NET和一系列技术,用于在互联网中让计算机共同工作。总的目标就是让信息和进程在大范围的系统和设备之间顺畅地交流。确切地说,.NET是一套标准和规范,并已经应用于自2002年以来Microsoft发布的所有产品中。

.NET包含了一种使用开放标准的XML进行信息交换的标准化格式。XML不需要请求者具备任何有关数据存储、如何保存信息的专门知识——数据都是以自描述的XML格式取出。XML Web services允许应用程序通过Internet进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft.NET平台提供创建XML Web services并将这些服务集成在一起之所需。同样地,目前几乎所有的数据存储都可以用XML来提供信息,这对于所有.NET数据客户都具有吸引力。

1 XML文档的操作

在.NET框架出现之前,人们习惯使用MSXML[3]服务这样一个基于COM的类库来编写Windows的XML驱动程序。MSXML类库的部分代码比API的层次更深,它完全嵌在操作系统底层。MSXML的确能够与应用程序进行交互,但是它不能真正与外部环境结合。而.NET框架给程序员提供了一套集成的XML工具,这是Microsoft公司第一次在它的开发平台中集成了对XML的支持。.NET在System.Xml命名空间中对XML的操作。该命名空间中的类符合W3C规范,因此可以提供各种各样的XML工具,用于生成Web应用程序和任何依赖于XML数据交换的方案。图1的对象提供了对XML文档基本的解析、查询、存储以及转换的功能。

这些对象从处理机制上来看,可以分为两种方式,该文讨论使用两种方式对XML文档进行遍历等操作。

1.1 ASP.NET中对XML数据的操作

XML文档的作用是存储和传输数据。而XML Schema是W3C关于XML 的一系列标准中的一个[4-5],于2001 年5 月正式发布。XML Schema的主要目的是定义XML模式,利用定义的模式可以约束XML文档。这利于使用计算机对XML 进行更准确的处理。DTD是随XML 1.0一起发布的一个标准,其目的与XML Schema相同,但是相比而言,XML Schema具有许多优势, 例如,XML Schema提供了更丰富的数据类型,可以直接用XML书写, 既有全局声明也有局部声明,支持命名空间等等。XMLSchema和XML一样,也是是一个树状结构(或者称为嵌套的层次结构),类似于关系数据库。相对于简单的DTD而言,XML Schema是一个更好的选择。在该文中,将构建一个基于XML Schema的XML数据库的存储系统。使用client.xsd和client.xml来阐述,client.xml文档的中存储了四个客户的信息,每个客户的信息包括编号(id)、姓名(name)、订单号(order)和交易金额(amount)。在确定XML文档结构时,选择clients作为文档的根元素,包含四个client元素,一个完整client元素包含了一个客户的全部信息,其中选择id作为client元素的属性,其他三个信息name、order和amount作为client元素的子元素。client.xsd和client.xml的结构如图2、图3所示。

1.1.1 使用DOM方式对XML数据进行处理

System.Xml含有一组将XML文档作为数据的对象。该数据可以通过XML文档树的节点、元素和属性等实体来访问。XML的这种生成和浏览方式非常灵活,但它比不上基于流的XML生成和浏览的性能。这种方式称为XML DOM解析器。DOM是一种基于树型的解析技术,将XML文档一次性解析,生成一个位于内存中的对象树用以描述该文档[6]。利用DOM很容易把XML文件转换成树型进行一系列操作, 比如遍历、添加、删除、修改文档内容, 具有良好的导航能力。所以DOM解析的优点就是解析的应用程序编写比较简单。但是, 它在使用上却常常会受到系统资源的限制, 尤其是内存。DOM在解析时是将整个文档载入内存中的, 在内存中完全载入整个文档和构建完整树型结构成本很高。DOM 是一种与平台和语言无关的接口,它允许程序和脚本动态访问和修改文档的内容、结构和类型。它定义了以下一系列的对象和方法对DOM 树的节点进行各种随机操作:

①XmlDocument对象:作为树的最高节点,即节点树的根节点,XmlDocument对象是对整个文档进行操作的入口,每一个DOM文档必须有一个XmlDocument节点;

②XmlElement和XmlAttribute对象:这些节点对象都是文档某一部分的映射,节点的定级层次恰好反映了文档的结构;

③XmlText对象:作为XmlElement 和XmlAttribute对象的子节点,Text 对象表达了元素或属性的文本内容。Text节点不再包含任何子节点;

④集合索引:DOM提供了几种集合索引方式,可以对节点按指定方式进行遍历。索引参数都是从0开始记数的。

使用DOM方式对XML文档进行的操作包括:

1) 遍历XML文档

static void Main(string[] args)

{

XmlDocument xdoc = new XmlDocument();

xdoc.Load(@"E:\client.xml");

XmlElement root = xdoc.DocumentElement;

Console.WriteLine("<" + root.Name + ">");

for (int i = 0; i < root.ChildNodes.Count; i++)

{

Console.WriteLine("<" + root.ChildNodes[i].Name + " " + root.ChildNodes[i].Attributes[0].Name + "=" + "\"" + root.ChildNodes[i].Attributes[0].InnerText + "\"" + ">");

for (int j = 0; j < root.ChildNodes[i].ChildNodes.Count; j++)

{

Console.WriteLine("<" + root.ChildNodes[i].ChildNodes[j].Name + ">" + root.ChildNodes[i].ChildNodes[j].InnerText + "");

}

Console.WriteLine("");

}

Console.WriteLine("");

}

2) 添加节点

XML 文档中的节点类型有许多种,添加不同类型的节点,所使用的方法也不一样。添加元素节点。添加一个元素的主要过程是:首先创建一个元素,接着把该元素添加至其父元素。其语法是:

XmlElement client= doc.CreateElement("client");

root.AppendChild (client);

添加元素属性。信息的存储可以采用子元素的形式,也能够为属性的形式。和添加元素有所差别,此处并不要形成一个属性类型的节点,把此节点添加至某元素中;而是直接把属性添加到某个元素节点上。其语法是:

client.SetAttribute ("id", "gr00003");

3) 删除节点

相对与添加节点来说,删除XML文档中节点就相对简单一些,其主要任务是寻找到需要被删除的对象。该对象不但要元素名称要相同,而且它的属性值也要相同。

root.RemoveChild(client);

4) 修改节点

修改XML节点的操作,能够总结成添加节点与删除节点的结合。对于不需要的信息,进行删除,而对于需要的信息,再进行添加,从而就达到了修改节点的目的。

1.1.2 使用流方式对XML数据进行处理

System.Xml中含有许多类,可以读取XML,并把XML写到流中,由于它表示的是一系列的读和写,所以使用这种方法可以快速使用或生成一个XML文档。使用该方法的局限性在于它并不将XML数据作为有形实体(如节点、元素和属性)组成的文档。这种方式被称为XML阅读器。

XML阅读器的客户端收到一个指向阅读器实例的引用,该实例提取底层的数据流并把取出的数据呈现为一棵XML树。阅读器类提供只读向前的游标,可以用阅读器类提供的方法滚动游标遍历结果集中的每条数据。阅读器与DOM解析器的不同之处在于阅读器没有父、子、兄弟节点的概念,而且是只读的。

类XmlReader的作用就是对输入流进行XML包装。它的Read方法可以快速的遍历一份文档,它只能向前,可以通过Value属性返回文档当前节点的值。XmlReader对XML文档默认采用深度优先遍历,也就是先访问元素的子元素,再访问它的兄弟元素。对于图 中的树形结构,它的访问顺序如图4所示:

图4 Read方法遍历文档的顺序图

static void Main(string[] args)

{

XmlReader reader = XmlReader.Create(@"E:\client.xml");

while(reader.Read())

if (reader.NodeType == XmlNodeType.Element)

{

Console.WriteLine("Element:<{0}>",reader.Name);

while(reader.MoveToNextAttribute())

Console.WriteLine("Attribute:{0}=\"{1}\,reader.Name, reader.Value);

}

else

if(reader.NodeType == XmlNodeType.Text)

Console.WriteLine("Text:{0}",reader.Value);

else

if(reader.NodeType == XmlNodeType.EndElement)

Console.WriteLine("EndElement:",reader.Name);

}

1.2 XML与SQL Server数据的互导

由于XML是跨平台的,很多时候需要将XML与数据库进行转换。下面介绍利用ASP.NET和DOM来实现SQL Server数据库和XML信息的转换,即如何把数据库中的信息提取出来生成所需要的XML文档,以及如何将XML文档中重要的信息写入到数据库中。

XML 技术已经变成了Web 上交换与表述数据的应用标准。为了更加有效地实施对XML数据的分析、加工与处理,提出了很多针对XML 的存储管理技术与查询语言。因为关系数据库是当前非常成熟的数据存储和管理技术,采用关系数据库来实现对XML 数据的存储与管理,就变成了一种合理有效的方式,受到了国内外广泛的关注。文中针对基于关系数据库的XML 数据管理系统的实现进行了详细地描述。利用关系数据库成熟的技术,能够重用数据库的事务处理机制与查询优化器,可以确保XML数据的完整性与一致性,而且,将Web数据存储至关系数据库中,发挥Web领域关系数据库更大的作用。

1.2.1 SQL Server数据转换为XML数据

在SQL Server数据库中新建了一个名为ClientInfo的数据库,其中含有一个表格:Clients,存储客户的信息,表格的结构定义如表1所示。

在将表Clients中的数据转换为client.xml文档的C#控制台程序中,首先创建到数据库的链接,并读取数据,得到数据表;接着通过CreateXmlDeclaration方法创建XML声明,并通过AppendChild方法将该声明添加到文档中;通过CreateElement方法创建根元素clients并添加文档中;然后通过for循环读取数据库中数据表的每一行的信息,只要读到一行信息就创建一个client元素,通过方法SetAttribute方法将ClientID字段的值做client元素的属性id的属性值,其他字段的值都做client元素的相应子元素的值,一行信息处理完后,将相应的client元素做clients元素的子元素。for循环结束后数据表中所有行信息都处理完,那么XML文档中根元素clients元素有四个client子元素,每个client元素将客户所有的信息都保存下来,最后通过Save方法将所得的XML文档保存到指定位置。

1.2.2 XML数据转换为SQL Server数据

利用节点的控制将XML文档的信息写入到数据库中。首先设置到数据库的连接,接着创建XmlDocument对象,并载入要转换的XML文档;通过for循环依次提取XML文档中根元素clients的四个子元素client,每个client元素的属性或者子元素的值就是数据表中一行的信息,循环结束后将XML文档中四个客户的信息添加到数据库中的四行信息中,最后更新数据表。

2 结论

XML是目前Web应用最广泛的数据描述与交换标准, 其文档处理方法是数据管理领域的一个重要问题。该文从XML的结构和内容的角度出发, 在.NET平台对XML数据进行处理时,多数是采用基于DOM的方式,通过XML树型结构中节点之间的关系来进行遍历、添加、删除和修改操作。而XML阅读器对XML文档遍历时相对灵活,Read方法能够以流的形式自动地将XmlReader对象指向下一个节点,不需要知道当前节点与下一结点的关系。该文还探讨了采用DOM方式对数据库与XML进行互导。但是对于XML数据操作各种方式的效率与存储的有效性,仍然需要进一步的完善与改进。

参考文献:

[1] XML规范V1版本[Z].1998.

[2] 殷丽凤,郝忠孝.基于XML Schema的XML强多值依赖的推理规则集[J].计算机工程与应用.2010,46(8):152.

[3] MSXML[EB/OL].http://msdn.microsoft.com/en-us/library/bb291077.aspx.

[4] Wang X Z,Yang S A,Yang S H,et al.The Application of Fuzzy Qualitative Simulation in Safety and Operability Assessment of ProcessPlants[J].Computers Chem Engng,1996(20):671-676.

[5] Tarifa E E,Scenna N J.Fault Diagnosis,Direct Graphs,and FuzzyLogic[J].Computers Chem Engng,1997(21):649-654.

[6] 刘芳.XML应用的基石:XML解析技术[M].计算机工程与设计,2005(10):2823.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

推荐访问:数据 NET xml

热门排行Top Ranking

支部组织生活方面存在问题清单和整改措施 党组织生活个人问题整改清单

下面是小编为大家精心整理的支部组织生活方面存在问题清单和整改措施党组织生活个人问题整改清单文章,供大家阅读参考

2021年党员个人问题清单及整改措施 党组织生活个人问题整改清单

下面是小编为大家精心整理的2021年党员个人问题清单及整改措施党组织生活个人问题整改清单文章,供大家阅读参考。

浅析军队战斗力损耗的新变化

关键词:军队;战斗力损耗;新变化军队战斗力的结构,是战斗力各要素间的结合方式和相互关系。军队战斗力的

小学六年级毕业演讲稿100字左右9篇

小学六年级毕业演讲稿100字左右9篇小学六年级毕业演讲稿100字左右篇1敬爱的老师,亲爱的同学们:大

问题及整改措施 (2) 药房个人存在问题及整改措施

下面是小编为大家精心整理的问题及整改措施(2)药房个人存在问题及整改措施文章,供大家阅读参考。精品文章《问题及

个人问题清单及整改措施(最新) 能力作风建设个人问题清单及整改措施

下面是小编为大家精心整理的个人问题清单及整改措施(最新)能力作风建设个人问题清单及整改措施文章,供大家阅读参考。在认真

疫情防控赞美警察诗朗诵 关于警察的诗朗诵

下面是小编为大家精心整理的疫情防控赞美警察诗朗诵关于警察的诗朗诵文章,供大家阅读参考。疫情防控赞美警

纳税人满意度调查存在不足及对策探讨 提升纳税人满意度的方式方法有哪些

下面是小编为大家精心整理的纳税人满意度调查存在不足及对策探讨提升纳税人满意度的方式方法有哪些文章,供大家阅读参考。纳

小学思想品德教育面临的问题及对策

摘要:小学思想品德课程是小学教育教学过程中不可或缺的一门综合性课程,它对学生良好品德的形成具有重要影

2020党支部班子查摆问题清单及整改措施 农村党支部问题清单

下面是小编为大家精心整理的2020党支部班子查摆问题清单及整改措施农村党支部问题清单文章,供大家阅读参

消防安全检查简报 派出所校园消防安全检查简报

下面是小编为大家精心整理的消防安全检查简报派出所校园消防安全检查简报文章,供大家阅读参考。简报第2期申扎县中学

2021教师党员年度个人总结8篇

2021教师党员年度个人总结8篇2021教师党员年度个人总结篇1敬爱的党组织:我是一个普通年轻的人民