XML

XML简介:
XML是用来描述数据的,XML的标记不是在XML中预定义的,你必须定义自己的标记,XML使用文档 
类型定义(DTD)或者模式(Schema)来描述数据,XML使用DTD或者Schema后就是自描述的语言,XML 
(eXtensibleMarkupLanguage)是可扩展标记语言,它与HTML一样,都是处于SGML,标准通用语 
言。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具 
。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可 
以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于 
掌握和使用。

作用:
1、丰富文件(Rich Documents)-自定文件描述并使其更丰富; 
2、属于文件为主的XML技术应用;
3、标记是用来定义一块数据应该如何呈现;
4、解释数据(Metadata)-描述其它文件或在线信息;
5、属于数据为主的XML技术应用;
6、标记是用来说明一块资料的意义;
7、组态档案(Configuration Files)-描述软件的组态参数。

语法:
SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就 
在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题这些问题,使建立一 
个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定 
义一直停滞不前。以这些问题作为出发点,XML逐渐步入视野。
XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法: 
1、某些起始标签不允许出现结束标签,例如HTML中标签。包含了结束标签就会出现错误。
2、某些起始标签可以选择性出现结束标签或者隐含了结束标签,例如HTML中标签,当出现另一个 
标签或者某些其他标签时,便假设在这之前有一个结束标签。
3、某些起始标签要求必须出现结束标签,例如HTML中标签。
4、标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如, 
Thisisasamplestring是正确的。
5、某些特性要求必须包含值,例如中的src特性。
6、某些特性不要求一定有值,例如[td]中的nowrap特性。
7、定义特性的两边有没有加上双引号都是可以的,所以和都是允许的。
8、任何的起始标签都必须有一个结束标签。
9、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符 
号之前紧跟一个斜线(/),例如。XML解析器会将其翻译成。
10、标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如 
thisisasamplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的 
内部括号之前,是不能关闭外面的括号的。
11、所有的特性都必须有值。
12、所有的特性都必须在值的周围加上双引号。
这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那 
些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、 
SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML。XML已经是世界上发展最快 
的技术之一。它的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件也类似 
于数据库,提供数据的结构化视图。

文档结构:
每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言。这一行代码会告诉解析器 
和浏览器,这个文件应该按照前面讨论过的XML规则进行解析。第二行代码,则是文档元素 
(documentelement),它是文件中最外面的标签是起始标签和结束标签之间的内容)。所有其他 
的标签必须包含在这个标签之内来组成一个有效的XML文件。XML文件的第二行并不一定要包含文 
档元素;如果有注释或者其他内容,文档元素可以迟些出现。 页面再往下的一些地方,可以发现 
标签里有一些特殊的语法。代码用于表示无需进行解析的文本,允许诸如大于号和小于号之类的 
特殊字符包含在文本中,而无需担心破坏XML的语法。文本必须出现在之间才能合适地避免被解析 
。这样的文本称为Character Data Section,简称CDataSection。

XML工作过程:
XML解析技术:
1.文档对象模型(DOM),一种基于树结构的API。
2.XML简单API(SAX),一种事件驱动的API.

DOM解析:
1.基于树状结构的API
2.整个XML文档必须在内存中解析和存储
3.客户端应用程序就可以随机访问这些对象
4.大型文档则会造成内存紧张

SAX解析:
1.SAX提高一种用于解析XML文档的事件驱动模型,使用回调机制将事件通知应用程序

2.特点:
不必将整个文件加载到内存中,占有的内存少;
不能对文档进行随机访问;
SAX是只读的;
文档只能遍历一次。

DOM和SAX解析技术的实现:
1.JAXP(Java API for XML):JAXP是对应用程序隐藏了特定解析器的接口,它提供了访问DOM和 
SAX实现的抽象层机制。
2.JDOM:基于树型结构,利用纯JAVA的技术对XML文档操作把SAX和DOM的功能有效地结合起来用 
Java语言读、写、操作XML的优化API
3.DOM4J:采用了java结合框架并完全支持DOM,SAX和JAXP性能优异、功能强大和易用使用大量使 
用接口,灵活性高。

posted on 2018-03-25 22:52  len3  阅读(165)  评论(0编辑  收藏  举报