当前位置: 首页 > news >正文

J2EE之XML

XML的定义:

 XML是当前最热门的网络技术之一,被称为第二代Web语言下一代网络应用的基石。它由万维网协会(W 3C )创建,用来克服 HTML的局限。自它被提出以来,几乎得到了业界所有大公司的支持,丝毫不逊于当年HTML被提出时的热度。

HTML有一个致命的缺点,就是只适合于人与计算机的交流,不适合计算机与计算机的交流。HTML代表的Internet的过去, HTML 4.0后就没有更高的版本了,取而代之的是依据XML定义的XHTML

XML,也称为可扩展标记语言Extensible Markup Language),是用来定义文档标记语言的框架,主要用来存储和发送数据信息,以便各种基于WEB的应用之间能更方便的交换数据。

W 3C XML的描述:“XML描述了一类被称为XML文档的数据对象,并部分描述了处理它们的计算机程序的行为。XMLSGML的一个应用实例或一种受限形式。从结构上说,XML文档遵从SGML文档标准。 

HTML一样,XML也是一种基于文本的标记语言,都是从SGML发展而来的,SGML(Standard Generalize Markup Language,标准通用标记语言)是一种老的标记语言,最初用于出版行业,非常复杂,依据SGML开发的应用非常昂贵,只在少数大公司和政府部门被采用,XML保留了SGML大部分的功能,降低了SGML的复杂程度,这样使得开发有关XML的应用具有面向大众的现实意义。

XMLHTML的不同在于:XML可以自由地定义标记来表现具有实际意义的文档内容,比如:可以定义〈姓名〉〈/姓名〉这样具有实际意义的标记(可以用中文)。在XML中,我们只需要注意文档的内容,而文档的表现形式则交给CSS(层叠样式表)和XSL(可扩展样式语言)来完成。如果XML文件只用于计算机与计算机之间交流信息,仅仅需要一个XML文件即可。如果要将XML文件中的信息以某种形式显示出来,如通过浏览器显示,则可引用一个样式表文件来定义浏览器怎样来显示XML文件中信息。

而且XML不像HTML那样具有固定的标记集合,它实际上是一种定义语言的语言,也就是说使用XML的用户可以定义无穷的标记来描述文档中的任何数据元素,突破了HTML固定标记集合的约束,将文档的内容组织成丰富复杂的完整的信息体系。

XML的组成:

          Schema(模式)

    规定了XML文档的逻辑结构,定义了XML文档中的元素、元素的属性以及元素和元素的属性之间的关系,它能够帮助XML的解析器校验XML文档标记是否合法;

          XSLeXtensible Stylesheet Language可扩展样式语言)

    用来规定XML文档表现形式的语言,同CSS类似

          XLLeXtensible Link Language可扩展链接语言)。

     进一步地扩展了当前Web上已有的简单链接。

XML的特点:

          良好的可扩展性、内容和形式的分离、高度结构化(严格的语法要求)以及方便网络间的信息传输。

          XML的规范很简洁,整个标准打印出来也只有几十页,而且XML的写法和HTML类似,都是把标记用〈 〉符号括起来, 所以学习XML并不困难。更加方便的是,XML允许使用中文创建XML标记

          XML文件的解析器大多数是使用Java语言写成的,这样,只要计算机支持Java虚拟机,都可以支持XML(几乎所有的计算机都支持Java虚拟机)。 例子:

          <?xml version=1.0 encoding=GB2312?

          <Java编程思想>

          <!--此书即将出版-->

          <作者>Bruce Eckel</作者>

          <出版社>机械工业出版社</出版社>

          <体裁>程序设计</体裁>

          <价格 货币单位="人民币">69.00/价格〉

          </ Java编程思想>

XML的语法:

          有的元素都要有闭合标记,一旦没有闭合元素代码,如果在作者子元素中漏掉</作者>,那么这段代码将是一段错误代码,不起任何作用;

          控制标记、指令和属性名称等英文对大小写敏感的。这也是在语法规则上与html不同的地方,元素名称必须区分大小写(元素闭合代码要与元素本身大小写一致)  

   嵌套对应。

          当声明一个XML文件的同时,必须建立一个根元素标记,就如同一篇文章的标题一样,所有的XML代码都要有根元素

          在编写html的时候,往往会忽略掉引号,而xml元素含有属性值得时候,这个属性值也必须被引号包含

          XML处理空白字符和HTML不一样。HTML标准规定,不管有多少个空白,都当作一个空白来处理;而在XML中规定,所有标记以外的空白,解析器都要忠实地交给解析之后的处理程序的应用程序处理。这样,我们有时必须摒弃编写HTML文件时的缩排习惯,因为缩排的空格,解析器也要处理。

          CDATA标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记。CDATA区域是由:“<![CDATA[”为开始标记,以“]]>”为结束标记。

          符合上述规定的XML文件就是Well-FormedXML文件

          如果一个XML文档满足XML规范中的某些相关法则,但没有使用DTD时,可称这份文档是Well-Formed。而如果一个XML文档是Well-Formed,且正确地使用了DTD,那么这个XML文档就是Validating。对

          对于想利用XML文件来交换信息的实体来说,他们之间必须有一个约定——即编写XML文件可以用哪些标记,母元素中能够包括哪些子元素,各个元素出现的顺序,元素中的属性怎样定义等,这样在用XML交换数据时才能够畅通无阻,这种约定称为DTDDocument Type Definition,文档格式定义)。

XML的语法规则:

          规则1:必须有XML声明语句。

          规则2:是否有DTD文件,如果文档是一个"有效的XML文档",那么文档一定要有相应DTD文件,并且严格遵守DTD文件制定的规范。

          规则3:注意大小写敏感。

          规则4:给属性值加引号。

          规则5:所有的标识必须有相应的结束标识。

          规则6:所有的空标识也必须被关闭。

元素的语法:

          可以随心所欲的用任何词语来作为元素名称,只要符合如下规范: 

          1 名称中可以包含字母、数字以及其它字母; 

          2 名称不能以数字或"_" (下划线)开头; 

          3 名称不能以字母 xml( XML  Xml ..)开头 

          4 名称中不能包含空格;

          5)名称中间不能包含":"(冒号)

          为了使元素更容易阅读理解和操作建议: 

          1 名称中不要使用"."。因为在很多程序语言中,"."是作为对象的属性,例如:font.color。同样的原因"-"也最好不要用,必须使用的,以"_"代替;

          2 名称尽量简短;

          3 名称的大小写尽量采用同一标准;

          名称可以使用非英文字符,比如用中文。但是有些软件可能不支持。(IE5目前是支持中文元素的。

注释的语法:

          注释是为了便于阅读和理解,在XML文档添加的附加信息,将不会被程序解释或则浏览器显示。注释的语法如下: 

          <!-- 注释信息 --> 

CDATA的语法:

          CDATA全称character data,翻译为字符数据。在写XML文档时,有时需要显示字母,数字和其它的符号本身,比如"<",而在XML中,这些字符已经有特殊的含义,这就需要用到CDATA语法,语法格式如下: 

 <![CDATA[这里放置需要显示的字符]]> 

   例如: 

 <![CDATA[<AUTHOR sex=""> Bruce Eckel </AUTHOR>]]> 

          在页面上显示的内容将是"<AUTHOR sex=""> Bruce Eckel </AUTHOR>" 

NAMESPACE的语法:

          namespaces通过给标识名称加一个网址(URL)定位的方法来区别这些名称相同的标识。

          Namespaces同样需要在XML文档的开头部分声明,声明的语法如下:

          <document xmlns:yourname='URL'>

          其中yourname是由你定义的namespaces的名称,URL就是名字空间的网址。

          假设上面的"桌子<table>"文档来自http://www.zhuozi.com,我们就可以声明为

          <document xmlns:zhuozi='http://www.zhuozi.com'> 

          然后在后面的标识中使用定义好的名字空间:

          <zhuozi:table>wood table</table>

    这样就将这两个<table>区分开来。注意的是:设置URL并不是说这个标识真的要到那个网址去读取,仅仅作为一种区别的标志而已。

使用XML创建配置文件:

          使用XML作为Java的配置文件有很多好处,从Tomcat的安装配置文件和J2EE的配置文件中,我们已经看到XMLJAVA应用程序中的普遍应用,例如server.xmlweb.xml文件。

          使用XML配置文件的优势就在于,能够使用简单的文本编辑工具去理解和修改配置文件。  

XML解析:

          Sun公司提供的JAXPJDOMXML进行解析。这里介绍使用JAXPJava API for XML Processing)解析XML的方法,JAXP支持SAXDOM两种程序编程接口

          XML简单应用编程接口(Sample API for XML,SAX )是基于事件的方法

          SAX是顺序的,层次化的分析XML文档,着眼于当前的事件连续的处理,不是全部文档都读入内存,所以这种方式不需要占用太多的内存。  

          文档对象模型(DOM)是HTMLXML文档的编程接口规范,它与平台和语言是无关的,因而可以用各种语言在各种平台上实现。该模型定义了HTMLXML文件在内存中的逻辑结构(即为文档),提供了访问、存取THMLXML文件的方法。利用DOM规范,可以实现DOM 文档和XML之间的相互转换,遍历、操作相应DOM文档的内容。可以说,要自由的操纵XML文件,就要用到DOM规范。

          DOM文档中的逻辑结构可以用节点树的形式进行表述。通过对XML文件的解析处理,XML文件中的元素便转化为DOM文档中的节点对象。DOM的文档节点有DocumentElementCommentType等等节点类型,其中每一个DOM文档必须有一个Document节点,并且为节点树的根节点。它可以有子节点,或者叶子节点如Text节点、Comment节点等。任何的格式良好的XML文件中的每一个元素均有DOM文档中的一个节点类型与之对应

          DOM,它将XML文件全部读入内存中,然后将各个元素组成一棵数据树,以便快速的访问各个节点。由于将文档全部读入内存非常消耗系统性能,因此对比较大的文档不适宜采用DOM方法来解析。而是采用基于事件处理方式的SAX。但正是由于SAX是基于事件的,所以它只能分析文档而不能修改文档。这时我们可以考虑应用DOM接口

相关文章:

  • IE8提示console未定义
  • 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-(一千零一拾一元整)输出。
  • oracle11g中SQL优化(SQL TUNING)新特性之Adaptive Cursor Sharing (ACS)
  • 浅析JAVA内部类
  • 将字符串按照单词完全反转---公司面试题
  • UI教程
  • 我想要的是什么,我真的清楚吗?
  • Java数据类型(2)------自动封装拆箱
  • Java实现排序算法(一)
  • JMS 之 Active MQ 的spring整合
  • Java实现排序算法(二)
  • vue项目实战爬坑小记001
  • Java实现排序算法(三)
  • Java通信编程之Socket入门
  • 回车提交表单
  • 345-反转字符串中的元音字母
  • angular学习第一篇-----环境搭建
  • AWS实战 - 利用IAM对S3做访问控制
  • ES6语法详解(一)
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Java读取Properties文件的六种方法
  • JS 面试题总结
  • Nodejs和JavaWeb协助开发
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Spring声明式事务管理之一:五大属性分析
  • vue2.0项目引入element-ui
  • vue-cli3搭建项目
  • 阿里云购买磁盘后挂载
  • 搞机器学习要哪些技能
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 详解移动APP与web APP的区别
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​什么是bug?bug的源头在哪里?
  • !$boo在php中什么意思,php前戏
  • #LLM入门|Prompt#3.3_存储_Memory
  • (C语言)共用体union的用法举例
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)EOS中账户、钱包和密钥的关系
  • (转)详解PHP处理密码的几种方式
  • (转载)Linux网络编程入门
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Mobi域名介绍
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 读取 JSON格式的数据
  • .Net7 环境安装配置
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)