您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第12XML数据操作
第12章XML数据操作学习内容XML概述基于DOM的XML操作XmlDtatSource控件12.1XML概述XML的英文全称是ExtensibleMarkupLanguage,中文翻译为可扩展标记语言。它是网络应用开发的一项新的技术。XML同HTML一样,是一种标记语言,但是XML的数据描述的能力要比HTML强很多,XML具有描述所有已知和未知数据的能力。XML扩展性比较好,可以为新的数据类型制定新的数据描述规则,作为对标记集的扩展。XML出现以后就迅速走红,目前已经成为不同系统之间数据交换的基础。XML的商用前景之所以非常广阔,也是因为它满足了当前商务数据交换的需求,12.1XML概述XML具有的特点:1.XML数据可以跨平台使用并可以被人阅读理解;2.XML数据的内容和结构有明确的定义;3.XML数据之间的关系得以强化;4.XML数据的内容和数据的表现形式分离;5.XML使用的结构是开放的,可扩展的。在.NET框架中,提供了一系列应用程序接口来实现XML数据的读写,比如使用XmlDocument类来实现DOM等。这些应用程序接口非常方便于程序员来操作XML。12.1XML概述1.XML语法(1)XML的声明XML声明具有如下形式:?xmlversion=1.0encoding=GB2312?XML标准规定声明必须放在文档的第一行。声明其实也是处理指令的一种,一般都具有以上代码的形式。(2)处理指令PI处理指令PI为处理XML的应用程序提供信息。处理指令PI的格式为:?处理指令名处理指令信息?(3)XML元素元素是组成XML文档的核心,格式如下:标记内容/标记12.1XML概述XML语法规则每个XML文档都要包括至少一个根元素。根标记必须是非空标记,包括整个文档的数据内容。数据内容则是位于标记之间的内容。下面示例代码是一个标准的XML文档:?xmlversion=1.0encoding=”GB2312”standalone=yes??xml-stylesheettype=”text/xsl”href=”style.xsl”?DocumentElementbasicID1/IDNAME张文/NAMECITY上海/CITY/basicbasicID2/IDNAME李世/NAMECITY上海/CITY/basic/DocumentElement12.1XML概述2.文档类型定义文档类型定义(DocumentTypeDefinition,DTD)是一种规范,在DTD中可以向别人或XML的阅读工具解释XML文档标记集中每一个标记的含义。DTD根据其出现的位置可以分为内部DTD和外部DTD两种。内部DTD是指DTD和相应的XML文档处在同一个文档中,外部DTD就是DTD与XML文档处在不同的文档之中。12.1XML概述描述DTD文档也需要一套语法结构,关键字是组成语法结构的基础,构建DTD时常用的关键字有:1.ANY:数据既可是纯文本也可是子元素,多用来修饰根元素2.ATTLIST:定义元素的属性3.DOCTYPE:描述跟元素4.ELEMENT:描述所有子元素5.EMPTY:空元素6.SYSTEM:表示使用外部DTD文档7.#FIXEDATTLIST:定义的属性的值是固定8.#IMPLIEDATTLIST:定义的属性不是必须赋值的9.#PCDATA:数据为纯文本10.#REQUIREDATTLIST:定义的属性是必须赋值的11.INCLUDE:表示包括的内容有效,类似与条件编译IGNORE与INCLUDE相应,表示包括的内容无效12.1XML概述DTD还提供了一些运算表达式来描述XML文档中的元素,常用的DTD运算表达式有:1.A+:元素A至少出现一次2.A*:元素A可以出现很多次,也可以不出现3.A?:元素A出现一次或不出现4.(ABC):元素A,B,C的间隔是空格,表示它们是无序排列5.(A,B,C):元素A,B,C的间隔是逗号,表示它们是有序排列6.A|B:元素A,B之间是逻辑或的关系上面的A,B,C代表XML文档中的元素。12.1XML概述3.可扩展样式语言XSL的英文是ExtensibleStylesheetLanguage,翻译成中文就是可扩展样式语言。它是W3C制定的另一种表现XML文档的样式语言。XSL是XML的应用,符合XML的语法规范,可以被XML的分析器处理。XSL是一种语言,通过对XML文档进行转换,然后将转换的结果表现出来。转换的过程是根据XML文档特性运行XSLT(XSLTransformation)将XML文档转换成带信息的树型结果。然后按照FO(FormattedObject)分析树,从而将XML文档表现出来。12.1XML概述XSL转换XML文档分为二个步骤:建树和表现树。建树可以在服务器端执行,也可以在客户端执行。在服务器端执行时,把XML文档转换成HTML文档,然后发送到客户端。而早客户端执行建树的话,客户端必须支持XML和XSL。XSLT主要用来转换XML文档,在商业系统中它可以将XML文档转换成可以被各种系统或是应用程序解读的数据。这非常有利于各种商业系统之间的数据交换。12.1XML概述XSLT实际上就是通过模板将源文件文档按照模板的格式转换成结果文档的。模板定义了一系列的元素来描述源文档中的数据和属性等内容,在经过转换之后,建立树型结构。XSLT中常用的模板如下表所示:12.1XML概述4.XPathXPath是XSLT的重要组成部分。XPath的作用在于为XML文档的内容定位,并通过XPath来访问指定的XML元素。。之所以要在XSL中引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素。XPath提供了一系列的节点匹配的方法:1.路径匹配:路径匹配和文件路径的表示比较相似,通过一系列的符号来指定路径。2.位置匹配:根据每个元素的子元素都是有序的原则来匹配。3.亲属关系匹配:XML是一个树型结构,因此在匹配时可以利用树型结构的“父子”关系。4.条件匹配:利用一些函数的运算结果的布尔值来匹配符合条件的节点。12.2基于DMO的XML操作XML数据的访问和操作时通过DOM(DocumentObjectModel)来实现的,它是一个程序接口。.NET类库中支持DOM的类分为两个层次:基础类和扩展类。基础类组包括了用来编写操纵XML文档的应用程序所需要的类;扩展类被定义用来简化程序员的开发工作的类。在基础类中包含了三个类:1.XmlNode类用来表示文档树中的单个节点,它描述了XML文档中各种具体节点类型的共性,它是一个抽象类。2.XmlNodeList类用来表示一个节点的有序集合,它提供了对迭代操作和索引器的支持。3.XmlNamedNodeMap类用来表示一个节点的集合,该集合中的元素可以使用节点名或索引来访问。12.2基于DMO的XML操作扩展类中主要包括了以下几个由XmlNode类派生出来的类。12.2基于DMO的XML操作创建XML文档的方法有两种:(1)创建不带参数的XmlDocument:XmlDocumentdoc=newXmlDocument();(2)创建一个XmlDocument并将XmlNameTable作为参数传递给它。创建文档时,将自动创建XmlNameTable,并在加载此文档时用属性和元素名加载XmlNameTable:System.Xml.XmlDocumentdoc=newXmlDocument(xmlNameTable);12.2基于DMO的XML操作DOM可以将不同的格式的XML读入内存,这些格式可以是字符串、流、URL、文本读取器或XmlReader的派生类。读取的XML数据的方法有两种:(1)Load方法,该方法加载指定的XML数据。总共包含四个重载函数:XmlDocument.Load(Stream):从指定的流加载XML文档。XmlDocument.Load(String):从指定的URL加载XML文档。XmlDocument.Load(TextReader):从指定的TextReader加载XML文档。XmlDocument.Load(XmlReader):从指定的XmlReader加载XML文档。(2)LoadXML方法,该方法从字符串中读取XML。12.2基于DMO的XML操作可以使用Save方法保存XML文档。Save方法有四个重载方法:1.Save(stringfilename):将文档保存到文件filename的位置。2.Save(System.IO.StreamoutStream):保存到流outStream中,流的概念存在于文件操作中。3.Save(System.IO.TextWriterwriter):保存到TextWriter中,TextWriter也是文件操作中的一个类。4.Save(XmlWriterw):保存到XmlWriter中。12.2基于DMO的XML操作ASP.NET的DOM提供了基于XPath的导航方法,使用这些导航方法可以方便的查询DOM中的信息。DOM提供了两种XPath导航方法:(1)SelectSingleNode方法:返回符合选择条件的第一个节点。(2)SelectNodes方法:返回包含匹配节点的XmlNodeList。12.2基于DMO的XML操作为一个XML文档创建一个新节点需两个步骤来完成。1.创建一个节点,选择如下表中方法中的一个。12.2基于DMO的XML操作2.创建新节点后,选择如下表方法中的一个,把创建的节点插入到XML结构树中。12.2基于DMO的XML操作在.NET框架下,使用DOM可以有多种方法来修改XML文档的节点、内容和值。常用的修改XML文档的方法如下:1.使用XmlNode.Value方法更改节点值。2.使用XmlNode.InnerXml属性完成用新节点替换节点来修改全部节点集。3.使用XmlNode.ReplaceChild方法用新节点替换现有节点。4.使用XmlCharacterData.AppendData方法、XmlCharacterData.InsertData方法或XmlCharacterData.ReplaceData方法将附加字符添加到从XmlCharacter类继承的节点。5.对从XmlCharacterData继承的节点类型使用DeleteData方法移除某个范围的字符来修改内容。6.使用SetAttribute方法更新属性值。如果不存在属性,SetAttribute创建一个新属性;如果存在属性,则更新属性值。12.2基于DMO的XML操作DOM在内存中之后,可以删除树中的节点,或删除特定节点类型中的内容和值:1.删除节点如要从DOM中移除节点,可以使用RemoveChild方法移除特定节点;如要从DOM中移除多个节点,可以使用RemoveAll方法移除当前节点的所有子级和属性。2.删除属性集合中的属性可以使用XmlAttributeCollection.Remove方法移除特定属性;也可以使用XmlAttributeCollection.RemoveAll方法移除集合中的所有属性,使元素不具有任何属性;或者使用XmlAttributeCollection.RemoveAt方法移除属性集合中的属性(通过使用其索引号)。3.删除节点属性使用XmlElement.RemoveAllAttributes移除属性集合;使用XmlElement.RemoveAttribute方法按名称移除集合中的单个属性;使用XmlElement.RemoveAttributeAt按索引号移除集合中的单个属性。4.删除节点内容可以使用DeleteData方法移除字符,此方法从节点中移除某个范围的字符。12.3XmlDtatSource控件XmlDataSource控件
本文标题:第12XML数据操作
链接地址:https://www.777doc.com/doc-2153253 .html