当前位置:文档之家› XML技术特点

XML技术特点

XML技术特点
XML技术特点

XML技术及其应用概述* 吕腾黄琼湘闫萍新疆大学数学与系统科学学院830046 关键词:XML 电子商务网络安全数据集成 1 XML的发展历史可扩展标记语言XML(eXtensible Markup Language)[1]是一种简单灵活的文本格式的可扩展标记语言,起源于SGML(Standard Generalized Markup Language),是SGML的一个子集合,也就是SGML的一个简化版本,非常适合于在Web上或者其它多种数据源间进行数据的交换。1969年,IBM公司开发了一种文档描述语言GML(Generalized Markup Language),用来解决不同系统中文档格式不同的问题,并在1986年成为了一个国际标准〔ISO8879〕,这就是SGML。SGML是很多大型组织的文档标准,它是一种与语言无关的、结构化的、可扩展的语言,这些特点使它在很多公司受到欢迎,被用来创建、处理和发布大量的文本信息。1989年,在CERN欧洲粒子物理研究中心的研究人员开发了基于SGML的超文本版本,称为HTML( HyperText Markup Language)。HTML继承了SGML的许多重要的特点,比如结构化、实现独立和可描述性,但是它也存在很多缺陷,比如它只能使用固定的有限的标记,而且它只侧重于对内容的显示方面。随着Web上数据的增多,HTML存在的这些缺点越来越突出。W3C的成员认识到,必须有一种方法能够把数据本身和数据的显示分离开来,这样W3C在1996年提出了XML的概念。XML不仅保留了SGML的很多优点,而且更加容易操作以及在World Wide Web环境下实现。1998年,XML成了W3C的推荐标准。 2 XML的特点(1)自描述。XML是一种标记语言,其内容由相应的标记来标识,具有自描述的特点。(2)可扩展性。XML是一种可扩展的标记语言,用户可以定义自己的标记来表达自己的数据,具有强大的可扩展性。(3)内容和显示分离。XML文档只描述数据本身,而与数据相关的显示则由另外的处理程序来完成,具有内容和显示相分离的特点。(4)本地计算。XML 解析器读取数据,并将它递交给本地应用程序(例如浏览器)进一步查看或处理,也可以由使用XML对象模型的脚本或其他编程语言来处理。(5)个性化数据视图。传递到桌面的数据可以根据用户的喜好和配置等因素,以特定的形式在视图中动态表现给用户。(6)数据集成。使用XML,可以描述和集成来自多种应用程序的不同格式的数据,使其能够传递给其它应用程序,做进一步的处理。3 XML的技术规范XML并不仅仅包括XML标记语言,它同时还包括了很多相关的规范,比如文档模式技术、文档样式技术、文档查询技术、文档解析技术、文档链接技术以及* 新疆大学博士基金资助。XML技术及其应用概述·2·文档定位技术等。基于XML 的这些规范,还有很多高层的应用协议,比如SOAP(Simple Object Access Protocol)和BizTalk 等。(1)文档模式技术:DTD(Document Type Definition)[2]和XML Schema[3]是XML文档的模式,用来对XML文档的逻辑结构进行定义。XML文档的模式规定了XML文档中的元素、属性、元素和元素以及元素和属性之间的关系。其中,DTD来自SGML,XML Schema 是专门为定义XML文档的模式而设计的,采用的是XML的语法。(2)文档样式技术:XML是内容(数据)和显示格式分离的语言,CSS (Cascading Style Sheets)[4]和XSL(Extensible Stylesheet Language)[5]就是定义XML文档的显示样式的。其中,CSS是随着HTML的出现而产生的,控制XML文档的显示,但不会改变源文档的结构。而XSL是专门为XML设计的,不仅用来显示XML文档,而且可以把一个XML文档转化为另一个XML文档。(3)文档查询技术:W3C推荐的XML文档的查询语言是XQuery1.0[6]。XQuery起源于一种叫Quilt的XML查询语言,借鉴了XPath 1.0、XQL、XML-QL、SQL和OQL等语言的优点。(4)文档解析技术:文档解析是指对XML文档的内容和结构进行访问和分析。文档解析技术包括文档对象模型DOM(Document Object Model)[7]和SAX(Simple API for XML)[8]。DOM是一种对平台和语言中立的接口,它是基于XML文档在内存中的树状结构,它的一个主要不足在于将整个XML文档装入内存所引起的巨大开销。而SAX使用事件驱动的XML解析,并不要求将整个XML文档一起装入内存。(5)文档链接技术:XML的链接功能比HTML

更强大,它使用XLINK。XML Linking Language 1.0 (XLink)是W3C主导的定义XML链接的语法。一个XLink的描述信息,显式的指定了资源或部分资源之间的关系。在XLink中,并不涉及标示不同类型数据位置的方法,XLink需要依靠不同的机制来标识你想要链接的资源(例如统一资源标识符)。W3C推出了另一种叫做XML Pointer Language(XPointer)的机制用于构造XML文档的内部结构。它可以链接到一个具体的对象上去,这个对象可以是一个网页、网页的一部分、网页中的一个元素甚至是网页中某行的某几个字。(6)文档定位技术:XML Path Language(XPath)1.0[9]是一种用于XSL Transformations (XSLT)1.0和XPointer中对XML文档各部分进行定位的语言。它给XSLT和XPointer提供一种定位语法,用来定位XML文件的各个部分。(7)其他XML技术:①MathML (Mathematical Markup Language)2.0是一种用来描述数学符号、结构和内容的XML应用。MathML的目标是在Web上实现能像HTML 处理文本一样,处理数学问题。②SMIL(Synchronized Multimedia Integration Language)2.0是一种基于XML的表述多媒体演示的语言。SMIL允许将一组独立的多媒体对象整合为一个多媒体演示。③VML(Vector Markup Language)是一种定义矢量信息编码格式的矢量标记语言,它是XML在矢量信息方面的应用。VML所定义的编码格式连同其它的标记一起描述了信息如何显示和编辑。④CDF(Channel Definition Format)允许Web发布者从任意的Web服务器经常地更新信息或是频道,以便这些信息能从Web服务器自动的传送到PC上的兼容接受程序或是其他的信息装置上。用户仅需选择一下频道,信息就会定时地传递到客户端。⑤XML片段交互XML Fragment Interchange标准支持由若干实体组成的逻辑文档。XML片断交互使得客户端可以不用涉及整篇文档,就能在一篇较大的文档中获得文档片断所处的上下文信息。XML技术及其应用概述·3·⑥HTML XHTML2.0 Markup Language是符合XML的HTML文档中的又一个家族。XHTML文档被设计成可以和XML处理器协同工作。XHTML文档是结构良好的XML,可以使用标准XML处理器对它们进行查看、编辑或验证。4 XML的应用 4.1 XML在电子商务中的应用我们介绍几种基于XML的电子商务模型[10]:(1)点对点(P2P)的电子商务模型。用XML定义企业之间交换的信息,然后用XML消息直接进行信息的交换,这种方式是对传统电子数据交换EDI(Electronic Data Exchange)的直接扩展。典型应用有微软的BizTalk框架。(2)基于代理(agent)的电子商务模型。在点对点模型的基础上,增加一个代理程序。代理程序的作用就是自动在网络上找到有用的信息,并将其转发到本企业的数据库。典型应用有CommerceNet的eCo架构。(3)基于门户(portal)的电子商务模型。企业将各种不同的信息发布到相应的门户上,然后各自根据自己的需求到不同的门户上寻找本企业感兴趣的信息。另外,各门户还可以实现信息的共享和互联,具有很大的扩展性。(4)基于web服务的电子商务模型。Web服务是一种基于标准的应用集成方式,它可以将运行在通过Intranet、Extranet或Internet连接的分布式服务器上的应用集成在一起。也就是通过互联网的开放标准,实现业务流程的导航、搜索以及与其他应用的交互。典型应用有基于XML技术和标准的ebXML技术框架。4.2 XML 在网络安全中的应用可以用XML语言来描述web应用层的安全规范。下面是用XML文件来描述产品编号类型的一个例子,要求编号的形式是三个数字后跟A到Z其中的一个字母,或者是7个数字: a Product number 4.3 XML用于B2B数据的集成如webMethods公司(基于XML的企业间数据集成解决方案供应商)的D&B Global Access 平台,利用基于XML的web界面定义语言WIDL通过API从各种来源收集信息,XML应用

程序DGX用作该平台客户端和服务器端之间的交换界面。4.4 XML与数据库Oracle公司自从Oracle 8i以来就增加了许多基本的XML特征,同样微软公司在SQL Server2000也支持XML的许多特征。另外象其它的数据库MySQL等也支持XML特征。5 结束语XML作为Internet上一种主要的数据表示和交换标准,本文仅对其最基本的技术规范作了一个简单的介绍,对XML的应用也只是举例说明了其中的一小部XML技术及其应用概述·4·分。相信随着XML的不断发展,会有越来越多的相关技术规范产生,也会有越来越多的其它应用涌现。参考文献〔1〕Tim Bray,Jean Paoli,and C. M. Sperberg-McQueen. Extensible Markup Language (XML) 1.0,W3C Recommendation. https://www.doczj.com/doc/0815358407.html,/TR/1998/REC-xml-19980210.html. February 10th,1998. 〔2〕Jon Bosak,Tim Bray,Dan Connolly,Eve Maler,Gavin Nicol, C. Michael,Lauren Wood,and James Clark. Guide to the W3C XML Specification ("XMLspec") DTD,Version 2.1. https://www.doczj.com/doc/0815358407.html,/XML/1998/06/xmlspec-report.htm. 〔3〕Henry S. Thompson,David Beech,Murray Maloney,and Noah Mendelsohn. XML Schema Part 1: Structures. W3C Recommendation,2 May 2001,https://www.doczj.com/doc/0815358407.html,/TR/ xmlschema-1/. 〔4〕Cascading Style Sheets home page. https://www.doczj.com/doc/0815358407.html,/Style/CSS/. 〔5〕Sharon Adler,Anders Berglund ,Jeff Caruso,Stephen Deach,Tony Graham,Paul Grosso ,Eduardo Gutentag,Alex Milowski,Scott Parnell,Jeremy Richman,and Steve Zilles. Extensible Stylesheet Language (XSL) Version 1.0,W3C Recommendation. 15 October 2001. https://www.doczj.com/doc/0815358407.html,/TR/xsl/. 〔5〕Scott Boag (XSL WG),Don Chamberlin,Mary F. Fernandez,Daniela Florescu,Jonathan Robie,and Jér?me Siméon. XQuery 1.0: An XML Query Language,W3C Working Draft 15 November 2002,https://www.doczj.com/doc/0815358407.html,/TR/xquery/. 〔6〕W3C Recommendation,Document Object Model (DOM),https://www.doczj.com/doc/0815358407.html,/DOM/. 〔7〕Eric Armstrong. Simple API for XML. Available at: https://www.doczj.com/doc/0815358407.html,/webservices/docs/ 1.0/ tutorial/doc/JAXPSAX.html. 〔8〕James Clark and Steve DeRose. XML Path Language (XPath) Version 1.0,W3C Recommendation,16 November 1999. https://www.doczj.com/doc/0815358407.html,/TR/xpath. 〔9〕方美琪,XML及其在电子商务中的应用,清华大学出版社,2003。作者简介吕腾,男,29岁,博士,新疆大学,计算机科学与技术专业。地址:新疆大学数学与系统科学学院,邮编:830046。电话:8582013。E-mail: lt0410@https://www.doczj.com/doc/0815358407.html, SGML、HTML和XML的区别:1、SGML 1969年,IBM公司开发了一种文档描述语言GML(Generalized Markup Language),用来解决不同系统中文档格式不同的问题。1986年成为了一个国际标准〔ISO8879〕,这就是SGML。SGML是很多大型组织的文档标准,它是一种与语言无关的、结构化的、可扩展的语言,这些特点使它在很多公司受到欢迎,被用来创建、处理和发布大量的文本信息。2、HTML 1989年,在CERN欧洲粒子物理研究中心的研究人员开发了基于SGML的超文本版本,称为HTML( HyperText Markup Language)。HTML继承了SGML的许多重要的特点,比如结构化、实现独立和可描述性,XML技术及其应用概述·5·但是它也存在很多缺陷,比如它只能使用固定的有限的标记,而且它只侧重于对内容的显示方面。3、XML W3C在1996年提出了XML的概念。XML不仅保留了SGML的很多优点,而且更加容易操作以及在World Wide Web环境下实现。1998年,XML成了W3C的推荐标准。与HTML最大的区别就是把数据本身和数据的显示分离开来。SGML是在文字处理应用中表达数据的一个方法。它已经出现十多年了,XML和HTML都是从SGML 发展而来的文档形式。因此,它们都有一些共同点,如相似的语法和标记的使用。但是HTML是SGML的一个应用,而XML是SGML的一个子集。区别是重要的。基本上HTML不能用来定义新的应用,而XML可以。事实上,XML和SGML是兼容的-- XML文档可以通过任何SGML制作或浏览工具阅读。但是,XML没有SGML那么复杂,它是设计用于有限带宽的网络的,如Internet。XML规范的合作者Tim Bray

说,XML的设计出发点是取SGML的优点,去除复杂的部分,使其保持轻巧,可以在Web上工作。HTML,SGML和XML将继续用于其合适的地方,它们中的任何一个不会使其他一个废弃。HTML仍是在Web上快速出版数据的最简单的方法,大部分短期的数据,如会议议程或广告宣传册。如果数据会长期使用,并且需要更多的一些结构,Web 建造者将愿意使用XML。不同于HTML和XML,SGML可能永远不会在Internet上被广泛接受,因为它从来没有为某个网络协议的需求而设计或优化过。对于高端的,复杂结构的出版应用,SGML将继续适用。

java_Dom4j解析XML详解

学习:Dom4j 1、DOM4J简介 DOM4J是https://www.doczj.com/doc/0815358407.html, 出品的一个开源XML 解析包。DOM4J应用于Java 平台,采用了Java 集合框架并完全支持DOM,SAX 和JAXP。 DOM4J 使用起来非常简单。只要你了解基本的XML-DOM 模型,就能使用。 Dom:把整个文档作为一个对象。 DOM4J 最大的特色是使用大量的接口。它的主要接口都在org.dom4j里面定义:

接口之间的继承关系如下: interface https://www.doczj.com/doc/0815358407.html,ng.Cloneable interface org.dom4j.Node interface org.dom4j.Attribute interface org.dom4j.Branch interface org.dom4j.Document interface org.dom4j.Element interface org.dom4j.CharacterData interface org.dom4j.CDATA interface https://www.doczj.com/doc/0815358407.html,ment interface org.dom4j.Text interface org.dom4j.DocumentType interface org.dom4j.Entity interface org.dom4j.ProcessingInstruction 2、XML文档操作1 2.1、读取XML文档: 读写XML文档主要依赖于org.dom4j.io包,有DOMReader和SAXReader两种方式。因为利用了相同的接口,它们的调用方式是一样的。 public static Docum ent load(String filenam e) { Document docum ent =null; try { SAXReader saxReader = new SAXReader(); docum ent =saxReader.read(new File(filename)); //读取XML文件,获得docum ent 对象 } catch (Exception ex) { ex.printStackTrace();

XML报文解析测试

XML报文解析测试 在平时工作中,难免会遇到把 XML 作为数据存储格式。面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML 这块来测试,因为遍历 XML 是工作中使用最多的(至少我认为)。 预备 测试环境: AMD 毒龙1.4G OC 1.5G、256M DDR333、Windows2000 Server SP4、Sun JDK 1.4.1+Eclipse 2.1+Resin 2.1.8,在 Debug 模式下测试。 XML 文件格式如下: <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>四川省XX县XX镇XX路X段XX号</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>四川省XX市XX乡XX村XX组</ADDR> </VALUE> </RESULT> 测试方法: 采用 JSP 端调用Bean(至于为什么采用JSP来调用,请参考: https://www.doczj.com/doc/0815358407.html,/rosen/archive/2004/10/15/138324.aspx),让每一种方案分别解析10K、100K、1000K、10000K的 XML 文件,计算其消耗时间(单位:毫秒)。 JSP 文件: <%@ page contentType="text/html; charset=gb2312" %> <%@ page import="com.test.*"%> <html> <body> <% String args[]={""}; MyXMLReader.main(args); %>

Python解析XML的三种方式

一、什么是 XML? XML 被设计用来传输和存储数据。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。 准备一个解析用的xml如下: 1 laoz 老曾 30 https://www.doczj.com/doc/0815358407.html, 我是老曾 2 qz 强子 30 https://www.doczj.com/doc/0815358407.html, 我是强子 1、第一行是 XML 声明 它定义 XML 的版本(1.0)和所使用的编码(utf-8 : 万国码, 可显示各种语言) 2、必须包含根元素(有且只有一个) 该元素是所有其他元素的父元素,这里的根元素是Data ..

所有的都被包含在里面 3、元素开始标签必须要有结束标签 < account > 元素有 6个子元素:、< description > 每个元素都有对应的关闭标签(跟HTML不一样,有一些是不需要关闭的,比如,
) 4、XML 标签对大小写敏感 比如是不一样的 5、XML 属性值必须加引号 < account name=laoz>这样会报错的,必须"laoz"才行 二、Python 对 XML 的解析 Python 有三种方法解析 XML,SAX,DOM,以及 ElementTree。 DOM会把整个XML读入内存,解析为树,因此占用内存大,解析慢,优点是可以任意遍历树的节点。SAX是流模式,边读边解析,占用内存小,解析快,缺点是我们需要自己处理事件。 1、利用DOM解析XML 一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件。

android 中对xml 进行解析

DOM解析器是通过将XML文档解析成树状模型并将其放入内存来完成解析工作的,而后对文档的操作都是在这个树状模型上完成的。这个在内存中的文档树将是文档实际大小的几倍。这样做的好处是结构清除、操作方便,而带来的麻烦就是极其耗费系统资源。而SAX正好克服了DOM的缺点,分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。 选择DOM 还是选择SAX,这取决于下面几个因素: 应用程序的目的:如果打算对数据作出更改并将它输出为XML,那么在大多数情况下,DOM 是适当的选择。并不是说使用SAX 就不能更改数据,但是该过程要复杂得多,因为您必须对数据的一份拷贝而不是对数据本身作出更改。 数据容量:对于大型文件,SAX 是更好的选择。 数据将如何使用:如果只有数据中的少量部分会被使用,那么使用SAX 来将该部分数据提取到应用程序中可能更好。另一方面,如果您知道自己以后会回头引用已处理过的大量信息,那么SAX 也许不是恰当的选择。 对速度的需要:SAX 实现通常要比DOM 实现更快。 基于上面的分析,在基于Android系统的内存和CPU资源比较有限的手持设备上,只要我们不需要修改XML数据或者随机的访问XML数据,SAX尽管可能需要更多的编码工作,但是为了更小的内存和CPU 消耗,还是值得的。 另外,Android SDK中已经包含了JAXP对应的javax.xml.parsers包,和SAX对应org.xml.sax(当然DOM对应的org.w3c.dom包也包含在内),加上Android还提供了android.sax这样的包来方便SAX Handle的开发,基于JAXP和SAX这样的标准方法来开发不仅复杂度不高,即使出现问题在讨论组中寻求解决方案也是比较容易的。 android 中的xml解析应该是和java中一条道路主要分为sax 解析和的Dom 解析。 如下的介绍的相关的包和类均为android 环境下: sax解析对应为: org\xml\sax 包:xml解析 javax.xml.parsers.SAXParserFactory javax.xml.parsers.SAXParser 两个主要用于SAXParser的上下文建立

Qt中使用DOM对XML进行的各种解析

Qt中使用DOM对XML进行的各种解析(总结) 前几天因为底层拓扑结构发生了变化,导致拓扑文件发生了变化,我负责的对于拓扑文件的解析操作自然也就要推到重来。利用上个周末的时间,把这个任务搞定了,顺便也利用这个时间好好总结下这次学到的知识。 我们知道,QT中对于XML文件的读写无非就两种方式,DOM和SAX,两种方法的具体介绍如下: /***************************************我是传说中的分割线**************************************************************/ 用于读取和操作XML 文件的标准是文档对象模型DOM。 DOM为XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后您的代码就可以使用DOM 接口来操作这个树结构。您可以遍历树以了解原始文档包含了什么,您可以删除树的几个部分,还可以重新排列树和添加新的分支,等等。遗憾的是,因为DOM 方法涉及读取整个文件并将该文件存储在一个树结构中,而这样可能是低效的、缓慢的,并且很消耗资源: DOM 构建整个文档驻留内存的树。如果文档很大,就会要求有极大的内存。 DOM 创建表示原始文档中每个东西的对象,包括元素、文本、属性和空格。如果您只需关注原始文档的一小部分,那么创建那些永远不被使用的对象是极其浪费的。 DOM 解析器必须在您的代码取得控制权之前读取整个文档。对于非常大的文档,这会引起显著的延迟。 这些仅仅是由文档对象模型的设计引起的问题;撇开这些问题,DOM API 是解析XML 文档非常有用的方法。 一种替代技术就是SAX。相比于文档对象模型DOM,SAX 是读取和操作XML 数据的更快速、更轻量的方法。SAX 允许您在读取文档时处理它,从而不必等待整个文档被存储之后才采取操作。它不涉及DOM所必需的开销和概念跳跃。 SAX API是一个基于事件的API,适用于处理数据流,即随着数据的流动而依次处理数据。SAX API 在其解析您的文档时发生一定事件的时候会通知您。在您对其响应时,您不作保存的数据将会被抛弃。 /***************************************我是华丽的分割线**********************************************************************/ 我们可以看到,如果所要读取的XML文件不是很大,采用DOM读取方法还是很便捷的,由于我用的也是DOM树读取的方法,所以,本文所介绍的也主要是基于DOM的方法读取。 根据常用的操作,我简单的把对XML的操作分为以下几类: 1 首先对XML文件进行操作,打开文件。 这个其实就是对文件进行操作,可以把它直接定义为构造函数,在对对象进行初始化时完成。 TopoDataReader::TopoDataReader(const wstring &filePath):_filePath(filePath),_qDomDoc("mydocument"),_qFile(QString::fromStdWString(fileP ath))

VC++ xml解析

三种最流行的开放源码XML 库是expat、libxml 和Xerces。 第一部分:DOM解析: 概述:DOM解析将会把一个完整的XML文档读进来,生成一个结构树。这样会要把XML文档全部都加载到内在中。所以解析起来的速度会要慢一些。 1、如何加载xml文件: //创建DOM,加载XML文档 MSXML::IXMLDOMDocumentPtr pCommandDoc; pCommandDoc.CreateInstance(__uuidof(MSXML::DOMDocument)); pCommandDoc->put_async(V ARIANT_FALSE); pCommandDoc->put_validateOnParse(VARIANT_FALSE); pCommandDoc->put_resolveExternals(V ARIANT_FALSE); pCommandDoc->put_preserveWhiteSpace(V ARIANT_TRUE); pCommandDoc->load(file.GetBuffer(0)); 2、在XML文档中查找指定的结点: //找到 MSXML::IXMLDOMNodePtr pRootNode=pCommandDoc->selectSingleNode("root/record"); if (pRootNode==NULL) { return ; } 3、得到XML文档中,结点的属性 CString strTemp; MSXML::IXMLDOMNamedNodeMapPtr pAttrs = NULL; pRootNode->get_attributes(&pAttrs); if (pAttrs==NULL) { return; } MSXML::IXMLDOMNodePtr pRequestTypeAttr=pAttrs->getQualifiedItem("name",""); _bstr_t strRequestType=pRequestTypeAttr->Gettext(); strTemp=strRequestType.operator char *(); 4、得到结点的内容 _bstr_t strVisiPort=pNode->Gettext(); 5、设置结点的内容 HRESULT hr=pNode->put_text(_bstr_t(m_strGatewayPassword)); 6、设置一个属性内容 IXMLDOMAttribute *pa=NULL; bstr = SysAllocString(L"属性1"); pXMLDom->createAttribute(bstr,&pNode); var = VariantString(L"strin"); pa->put_value(var); pRoot->setAttributeNode(pa, &pa1); 第二部分、如何使用SAX解析

XML创建与解析常用方法介绍

XML解析方式介绍 1.DOM4J(Document Object Model for Java) 虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能。从2000下半年开始,它就一直处于开发之中。 为支持所有这些功能,DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections 类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然DOM4J付出了更复杂的API的代价,但是它提供了比JDOM大得多的灵活性。 在添加灵活性、XPath集成和对大文档处理的目标时,DOM4J的目标与JDOM是一样的:针对Java 开发者的易用性和直观操作。它还致力于成为比JDOM更完整的解决方案,实现在本质上处理所有Java/XML问题的目标。在完成该目标时,它比JDOM更少强调防止不正确的应用程序行为。 DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun的JAXM也在用DOM4J. 【优点】 ①大量使用了Java集合类,方便Java开发人员,同时提供一些提高性能的替代方法。 ②支持XPath。 ③有很好的性能。 【缺点】 ①大量使用了接口,API较为复杂。 2.SAX(Simple API for XML) SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。 选择DOM还是选择SAX?对于需要自己编写代码来处理XML文档的开发人员来说,选择DOM还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档,而SAX 采用的是事件模型。

XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较[收藏]

1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 2)SAX SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。 选择DOM还是选择SAX?对于需要自己编写代码来处理XML文档的开发人员来说,选择DOM还是SAX解析模型是一个非常重要的设计决策。DOM 采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。 DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然

后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。 SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。 3)JDOM https://www.doczj.com/doc/0815358407.html,/ JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正在考虑通过“Java规范请求JSR-102”将它最终用作“Java标准扩展”。从2000年初就已经开始了JDOM开发。 JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。

四种XML解析器比较

1.详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 2)SAX SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。 而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。 选择DOM还是选择SAX?对于需要自己编写代码来处理XML文档的开发人员来说,选择DOM 还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。 DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。 SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag.特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。 3)JDOM https://www.doczj.com/doc/0815358407.html, JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正在考虑通过“Java规范请求JSR-102” 将它最终用作“Java标准扩展”。从2000年初就已经开始了JDOM开发。 JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。 JDOM文档声明其目的是“使用20%(或更少)的精力解决80%(或更多)Java/XML问题”(根据学习曲线假定为20%)。JDOM对于大多数Java/XML应用程序来说当然是有用的,并且大多数开

四中最常用的XML文件解析总结

XML文件学习总结 掌握了XML文件解析的常用的4中方式:DOM解析、SAX 解析、STAX解析以及DOM4j解析XML文件。 一、DOM 解析xml文件 public List parse(String url) throws Exception{ // 1、创建解析工厂 D ocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//创建工厂是单例模式,不能直接new对象,需要调用newInstance来创建对象。 // 2、创建解析器 D ocumentBuilder builder = factory.newDocumentBuilder(); // 3、创建解析器的url F ile file = new File(url); // 4、得到解析后的Document对象 D ocument doncument = builder.parse(file); // 5、通过得到节点名字得到所有同名节点的集合NodeList N odeList nodeList = doncument.getElementsByTagName("student"); // 6、遍历NodeList集合 f or (int i = 0; i < nodeList.getLength(); i++) { // 得到每个节点对象 Node studentNode = nodeList.item(i); Student st = new Student(); NamedNodeMap map = studentNode.getAttributes(); //for(int j=0;j

org.w3c.dom(java dom)解析XML文档

位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的API: 1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2.解析器:DocumentBuilder 创建方法:通过解析器工厂类来获得DocumentBuilder db = dbf.newDocumentBuilder(); 3.文档树模型Document 创建方法:a.通过xml文档 Document doc = db.parse("bean.xml"); b.将需要解析的xml文档转化为输入流InputStream is = new FileInputStream("bean.xml"); Document doc = db.parse(is); Document对象代表了一个XML文档的模型树,所有的其他Node都以一定的顺序包含在Document对象之内,排列成一个树状结构,以后对XML文档的所有操作都与解析器无关, 直接在这个Document对象上进行操作即可; 包含的方法:

4.节点列表类NodeList NodeList代表了一个包含一个或者多个Node的列表,根据操作可以将其简化的看做为数组 5.节点类Node

Node对象是DOM中最基本的对象,代表了文档树中的抽象节点。但在实际使用中很少会直接使用Node对象,而是使用Node对象的子对象Element,Attr,Text等 6.元素类Element 是Node类最主要的子对象,在元素中可以包含属性,因而Element中有存取其属性的方法

Android SAX 方式解析XML 字符串

这个是主类: import java.io.StringReader; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; public class ParsingXML extends Activity { private final String MY_DEBUG_TAG = "WeatherForcaster"; public void onCreate(Bundle icicle) { super.onCreate(icicle); TextView tv = new TextView(this); String xml = "aHR0cDovLzE5Mi4xNjguMTA0LjExMy9ldW1zL2NsaWV udC90ZW1 wbGF0ZTIwMDA vbW9iaWxlZW50cnkucGhwP3VzZXJuYW1lPWNlc2hp"; // 创建一个新的字符串 StringReader read = new StringReader(xml); // 创建新的输入源SAX 解析器将使用InputSource 对象来确定如何读取XML 输入 InputSource source = new InputSource(read); try { SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); ExampleHandler myExampleHandler = new ExampleHandler(); xr.setContentHandler(myExampleHandler); xr.parse(source); ParsedExampleDataSet parsedExampleDataSet = myExampleHandler .getParsedData(); String url=Base64Coder.decodeString(parsedExampleDataSet.toString()); tv.setText(url); } catch (Exception e) { tv.setText("Error: " + e.getMessage()); Log.e(MY_DEBUG_TAG, "WeatherQueryError", e); } this.setContentView(tv); } } 下面两个类是以SPX 方式解析XML字符串

XML DOM

第六教案 课题:文档对象模型DOM 目的要求: ?理解DOM模型 ?解析XML文档,生成文档对象 ?操纵DOM模型的对象、接口、属性、方法、事件 重点难点: ?重点:使用DOM API提供的对象和接口对XML进行操作,主 要包括查询、添加、修改、删除接点等操作 ?难点:如何使用API 教学过程: 如图。 作业布置:

一、文档对象模型(DOM)概述 下面,我们将说明如何通过程序访问XML文档。其中一种方法是通过文档对象模型(Document Object Model,DOM)。在本章中,我们将介绍文档对象模型,并借助几个程序实例解释它的功能。 1.1什么是文档对象模型(DOM)? 文档对象模型一词在Web浏览器领域并不陌生。窗口、文档和历史等对象都被认为是浏览器对象模型的一部分。然而,任何做过Web开发的人都知道各种浏览器实现这些对象的方式不尽相同。对于如何通过Web访问和操作文档结构这个问题,为了创建更加标准化的方法,W3C提出了目前的W3C DOM规范。 W3C DOM是一种独立于语言和平台的定义,即:它定义了构成DOM的不同对象的定义,却没有提供特定的实现,实际上,它能够用任何编程语言实现。例如,为了通过DOM访问传统的数据存储,可以将DOM实现为传统数据访问功能之外的一层包装。利用DOM中的对象,开发人员可以对文档进行读取、搜索、修改、添加和删除等操作。DOM为文档导航以及操作HTML和XML文档的内容和结构提供了标准函数。 1.2常见的文档模型 常见的文档模型有三类: 线性模型、树型模型、对象模型。 DOM模型是对象模型。 1.3DOM的工作原理及DOM模型结构 当使用DOM对XML文本文件进行操作时,它首先要解析文件,将文件分解为

使用DOM4j解析xml文件

Xml文件: studentname 78 78 98 studentname 77 68 88 JAVA文件: import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** *DOM4j对xml文件的操作 *操作DOM4j的时候注意要导入3个jar包,否则会报异常 *dom4j-1.6.1.jar *jaxen-1.1-beta-6.jar *saxpath.jar **/ public class ReaderDom4j {

xml文件解析

查找结点,读取结点属性------------------------------------------------------ 获取结点的属性------------------------------------- 设置结点的属性------------------------------------------------ 给结点添加新属性------------------------------------------- 设置一个结点的内容---------------------------------------------------- 添加新节点---------------------------------------------------- 编码问题------------------------------------------------------------------ XML树: John Fleck June 2, 2002 example keyword This is the headline This is the body text. 1:查找结点 #include #include #include #include #include Void parseStory (xmlDocPtr doc, xmlNodePtr cur) { xmlChar *key; cur = cur->xmlChildrenNode; while (cur != NULL) { if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword")))

XMLDOM手册

XMLDOM是用来访问和操作XML文档的编程接口规范。 1、简介 XMLDOM被设计为可用于任何语言和任何操作系统。借助DOM,程序员可以创建XML文档、遍历其结构,增、改、删其元素。DOM将整个XML文档视作一棵树,文档级的元素是树的根。 2、MS的XML解析,IE5.0以上。 是一个COM组件,至少包含下列对象: (1)Micosoft.XMLDOM (2)Micosoft.XMLDOM.parseError,有如下属性:

(5)NodeList的W3C规定的属性和方法。

async:一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作 userID 用户ID,用于服务器身份验证 password 用户密码,用于服务器身份验证 XMLHTTP对象的Send方法 用Open方法对Request对象进行初始化后,调用Send方法发送XML数据:poster.send XML-data Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send 进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。 XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示: 值说明 0 Response对象已经创建,但XML文档上载过程尚未结束 1 XML文档已经装载完毕 2 XML文档已经装载完毕,正在处理中 3 部分XML文档已经解析 4 文档已经解析完毕,客户端可以接受返回消息 客户机处理响应信息 客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的: ● responseTxt:将返回消息作为文本字符串; ● responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用; ● responseStream:将返回消息视为Stream对象。 下面的xml文件是动态生成的最后用xmlHTTP传送出去,这是一个在客户端JavaScript脚本里的内容,当然你也可以写在服务器,但是要相应的改一些东西:(仅供大家参考,了解它的用法) var xmlDoc=new ActiveXObject("MSXML2.DOMDocument"); flag=xmlDoc.loadXML(""); newNode =xmlDoc.createElement("编码") MarkNode=xmlDoc.documentElement.appendChild(newNode); newNode =xmlDoc.createElement("StartMark")

Java解析XML文件

Java解析XML文件 ========================================== xml文件 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>四川省XX县XX镇XX路X段XX号</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>四川省XX市XX乡XX村XX组</ADDR> </VALUE> </RESULT> ========================================== 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 import java.io.*; import java.util.*; import org.w3c.dom.*; import javax.xml.parsers.*; public class MyXMLReader{ public static void main(String arge[]){ long lasting =System.currentTimeMillis(); try{ File f=new File("data_10k.xml"); DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document doc = builder.parse(f); NodeList nl = doc.getElementsByT agName("VALUE"); for (int i=0;i<nl.getLength();i++){ System.out.print("车牌号码:" +

相关主题
文本预览
相关文档 最新文档