【asp精品源码栏目提醒】:网学会员为需要asp精品源码的朋友们搜集整理了xml文件解析 - 教育相关资料,希望对各位网友有所帮助!
XML文件解析 1.XML数据存取机制 2.XML应用程序接口DOM和SAX 3.xerces c的编程方法 4.使用CMarkup解析XML 5.XML Database简介 1 XML数据存取机制XML数据源可分为下面三种: XML纯文本文档 将数据存储于文件中,其最大的优点在于可以直接方便地读取,或者加 以样式信息在浏览器中显示,或者通过DOM接口编程同其他应用程序相连。
关系型数据库 其目的是便于开发各种动态应用其优点则在于通过数据库系统对数据进 行管理,然后再利用服务器端应用(如ASP、JSP、Servlet)等进行动态 存取。
这种方式最适合于当前最为流行的基于三层结构的应用开发。
来源于其他各种应用数据 如邮件、目录清单、商务报告等。
来源广泛,因此需要具体情况具体对 待。
2XML数据存取机制 3 文档对象模型DOM DOM---对象化的XML数据接口 它定义了XML文档的逻辑结构,给出了一种访问和处理XML文档的方法。
利用DOM,程序开发人员可以动态地创建文档,遍历文档结构,添加、修 改、删除文档内容,改变文档的显示方式等等。
DOM树 DOM这个层次的结构是一棵根据XML文档生成的节点树。
在这棵节点树中, 有一个根节点--Document节点,所有其他的节点都是根节点的后代节点。
节点树生成之后,就可以通过DOM接口访问、修改、添加、删除、创建树 中的节点和内容。
4 文档对象模型DOMDOM的四个接口: Document接口 Document接口代表了整个XML文档,因此,它是整棵文档树的根, 提供了对文档中的数据进行访问和操作的入口。
Node接口 Node接口提供了访问DOM树中元素内容与信息的途径,并给出了对 DOM树中的元素进行遍历的支持。
Nodelist接口 表示有顺序关系的一组节点,NodeList的对象是“live”的. 可 通过一个索引来访问,该索引值从0开始。
Namenodemap接口 包含了可以通过名字来访问的一组节点的集合,是无序关系 5 简单应用程序接口SAXSAX是一种事件驱动的接口,它的基本原理是由接口的用户提供符合定义的处理器,XML分析时遇到特定的事件,就去调用处理器中特定事件的处理函数。
6 简单应用程序接口SAX SAX的API接口:SAXParserFactoryParserDocumentHandlerErrorHandlerDTDHandlerEntityResolver一个典型的SAX应用程序至少要提供一个DocumentHandler接口。
一个健壮的SAX应用程序还应该提供ErrorHandler接口。
7 DOM和SAX的比较 DOM—灵活,效率较低 它可以任意地控制整个XML文档中的内容。
然而,由于DOM分析器把整个 XML文档转化成DOM树放在了内存中,因此,当文档比较大或者结构比较 复杂时,对内存的需求就比较高。
而且,对于结构复杂的树的遍历也是 一项耗时的操作。
所以,DOM分析器对机器性能的要求比较高,实现效率 不十分理想。
SAX—缺乏灵活性,效率高 对XML文档进行分析时,触发了一系列的事件,由于事件触发本身是有时 序性的,而事件处理函数本身则要由应用程序自己来实现。
同DOM分析器 相比,SAX分析器缺乏灵活性。
然而,由于SAX分析器实现简单,对内存 要求比较低,因此实现效率比较高,对于那些只需要访问XML文档中的数 据而不对文档进行更改的应用程序来说,SAX分析器更为合适。
8 Xerces c介绍 特性:1.验证: 支持DTD和Schema2.许可证:具有开放源代码许可证,可用于商业用途3.提供了多平台的安装包4.提供了丰富的DOM和SAX的API编程接口5.支持多种编码格式UTF-8,ISO8859-1等 9 Xerces DOM Programming关键步骤1.初始化并构造Parser2.设置Parser3.设置ErrorHandler4.解析XML文档5.DOM操作6.DOM的序列化7.释放DOM资源结束 10 1.初始化并构造Parser 必须要做的工作:XMLPlatformUtils::Initialize 构造ParserXerces C提供了XercesDOMParser和DOMBuilder来构建一棵DOM树代码片断: XercesDOMParser parser new XercesDOMParser代码片断: DOMBuilder parser DOMImplementationLSimpl- createDOMBuilderDOMImplementationLS::MODE_SYNCHRONOUS 0 11 2.设置ParserFeature or PropertysetIncludeIgnorableWhitespacebool设置是否将“ignorable whitespace”的文本节点加入到DOM树中setExternalNoNamespaceSchemaLocationconst XMLCh设置对文档做Schema验证的文件setDoNamespacesbool设置是否对命名空间进行处理setDoSchemabool设置是否支持Schema,如果被设置成true需要DoNameSpace也被设置成truesetValidationSchemeconst ValSchemesVal_Auto: 当指定了Schema或者DTD时,Parser会报告所有的解析错误Val_Always: Parser将始终报告所有的解析错误Val_Never: 不报告所有的解析过程中发现的错误setLoadExternalDTDconst bool设置是否加载外部的dtd, 12 3.设置ErrorHandler 构造ErrorHandler ErrorHandler的概念来自于SaxParser,它包含了warning、 error和fatalError三种解析中的错误或警告。
ErrorHandler处理 通过对parser设置ErrorHandler,用户可以捕捉xml解析中错误 或者警告,并分别做处理。
13 4.解析XML文档 构建DOM树,解析XML代码片断:实例.parse const InputSource source 其中source可以是xml文件的路径、包含xml 文档的字符串或者二 进制流。
参考XercesDOMParserExample参考DOMBuiderExample 结果解析完成后,可以获得文档对象和DOM树的根结点DOMDocument pDoc Parser.getDocumentDOMElement pRootElem pDoc-getDocumentElement 14 5.1 DOM操作 DOMNode方法总结DOMNode cloneNodebool deep constDOMNode insertBeforeconst DOMNode newChild const DOMNode refChildDOMNode insertAfterconst DOMNode newChild const DOMNode refChildDOMNode replaceChildconst DOMNode newChild const DOMNode oldChildDOMNode removeChildconst DOMNode oldChildDOMNode appendChildconst DOMNode newChildDOM API使您可以像树木修理工那样修整、嫁接和剪掉 DOM 树的节点。
15 5.2 DOM操作 创建DOM元素 通过DOMDocument 对象来创建DOM元素。
可以在任何 DOMNode 对象中使用 cloneNode 方法。
DOMElement方法总结 void setAttributeconst DOMString name const DOMString value DOMAttr setAttributeNodeDOMAttr newAttr void setAttributeNSconst DOMString namespaceURI const DOMString qualifiedName const DOMString value DOMAttr removeAttributeNodeDOMAttr oldAttr void removeAttributeconst DOMString name void removeAttributeNSconst DOMString namespaceURI const DOMString localName 16 5.3 DOM遍历 迭代器 DOMNodeIterator iterator doc.createNodeIteratorroot DOMNodeFilter::SHOW_TEXT NULL true for current iterator.nextNode current 0 current iterator.nextNode std::cout writeNodemyFormTarget XMLDoc 注意:1.结构美观的XML设置XMLUni::fgDOMWRTFormatPrettyPrint属性2.可写的文件属性序列化xml文档到一个文件中时请确保文件属性是可写入的,否则会导致序列化异常。
19 7.DOM资源释放 释放该释放的资源1.调用DOMDocument的release函数2.销毁生成的XercesDOMParser和DOMBuilder的实例3.XMLPlatformUtils::Terminate,结束 注意当使用同一个Parser来解析多个XML文档时,在构建DOM树之前,应先将上次的DOM资源回收。
20
上一篇:
XXX市XX区精英台球厅计费管理系统开发
下一篇:
法律专业开题报告范文