Java web基础总结一之—— xml基础

Java web基础总结之一——xml基础

要学习java web,掌握xml语言是必要的,可以说,在一个java web项目中,xml配置文件无处不在。首先每个java web项目都会有一个web.xml的配置文件。而在各种各样的框架中,xml配置文件更是必不可少。当然,虽然有些框架可以使用注解来实现零配置。但是一般还是习惯于使用配置文件,可以和代码解耦和。

一.Xml基础知识以及语法规范

那首先的问题是,什么是xml?它主要用来做什么?

Xml是Extensible Markup Language的缩写,就是可扩展标记语言。W3C组织于2000发布了XML1.0规范。当时据说是为了替代html语言,现在看来是没有实现。

XML语言的作用是描述有关系的数据。在XML语言中,它允许用户自定义标签。一个标签用于描述一段数据;一个标签可分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其它标签描述其它数据,以此来实现数据关系的描述。比如:

<?xml version="1.0" encoding="UTF-8"?>

<大学专业>

<文科>

<历史></历史>

<法律></法律>

</文科>

<理科>

<化学></化学>

<物理></物理>

</理科>

</大学专业>

下面了解一下xml的语法

一个完整的xml文件会包括以下几个部分:文档声明 ,元素,属性,注释 ,CDATA及转义字符 ,处理指令。

1.      文档声明

在编写XML文档时,最开头要进行文档声明,声明XML文档的类型,下面是两个例子。

最简单的声明语法:

<?xmlversion="1.0" ?>

用encoding属性说明文档的字符编码:

<?xmlversion="1.0" encoding="GB2312" ?>

2.      元素

XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式,例如:

包含标签体:<大学专业> xx</大学专业>

不含标签体的:<大学专业> </大学专业>, 可以简写为:<大学专业/>

元素的语法规范

XML的合法的元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:大小写敏感的,例如,<A>和<a>是完全不一样的。不能以数字或"_" (下划线)开头。不能以xml(或XML、或Xml 等)开头。不能包含空格。而且中间不能包含冒号。

*有几个需要注意的问题:

(1).一个标签中也可以嵌套若干子标签。绝对不能交叉嵌套,比如:

<历史>aa<物理>xx</历史></物理>

(2).通常XML文档必须有且仅有一个根标签,其它标签都是这个根标签的子孙标签。

(3).和java代码不同的是,对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。举个例子,下面的两个完全不同。

例1:

<大学专业> xx</大学专业>

例2:

<大学专业> xx

</大学专业>

3.      属性

一个标签可以有一个或者多个的属性,属性有名字和值,例如:

<importresource="spring-dao.xml"/>

在XML中,标签属性所代表的信息,也可以被改成用子元素的形式来描述,例如:

< import>

< resource > spring-dao.xml</ resource >

</ import>

同时也要注意一些细节,属性值必须要用双引号(")或单引号(‘)引起来,属性的命名规范和标签一样。

4.      注释

Xml中也可以写一些注释,文件中的注释的格式是:“<!--注释内容-->”。需要注意几个细节,一个是注释不能有嵌套,还有就是和java代码不一样的是,注释不能写在开头,即在xml声明的前面。

5.      CDATA区域和转义字符

当我们编写XML文件时,可能会有这种需求,就是有些内容不想让解析引擎解析执行,而是当作原始内容处理,这时可以有两种情况。

(1). 对于任意的字符,可以使用CDATA区,对于CDATA区域内的内容,XML解析程序不会处理,而是直接输出,不做任何的解析。语法是:<![CDATA[ 内容 ]]>

(2). 对于一些单个字符,由于是xml中的有意义的字符,若想显示其原始样式,就可以使用转义的形式予以处理。下面是常见的转义字符表:

6.      处理指令

处理指令,简称PI (processinginstruction)。处理指令用来指挥解析引擎如何解析XML文档内容。处理指令必须以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。

二.XML的约束

所谓的xml约束,就是约束一个XML文档的书写规范的一个约束文档,这称之为XML约束。例如spring中的约束文件:

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.1.xsd"

常见的有XML DTD 和XML Schema两种约束

1.      XML DTD约束

DTD(Document Type Definition),全称为文档类型定义。使用一个以 .dtd 为后缀的约束文件。DTD约束即可以作为一个单独的文件编写,也可以在XML文件内编写。具体的语法这里就不详细讨论了。

2.       XML Schema约束

XML Schema 是另一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性。Schema约束与dtd约束最大的区别在于Schema约束文档本身也是一个符合xml语法的xml文件。它的功能更强大,更复杂,现在已是w3c组织的标准,它正逐步取代DTD成为标准的xml约束,常见的是以.xsd为后缀的文件,如上面例子中的spring的约束文件。

三.XML文件的解析

Java中有很多的第三方的解析xml文件的类库,可以避免我们重复造轮子,而去直接使用。

XML解析方式分为两种:dom和sax。dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。sax: (Simple APIfor XML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。XML解析器(apache)主要有:Crimson(sun1.4)、Xerces(IBM 1.5)
、Aelfred2(DOM4J)。XML解析开发包(对解析封装后开发的API)主要有Jaxp(使用Crimson(sun1.4)、Xerces(IBM 1.5) )、Jdom、Dom4j(Aelfred2(DOM4J))。

DOM解析和SAX解析的区别是在使用 DOM 解析 XML 文档时,需要读取整个 XML 文档,在内存中构架代表整个 DOM 树的Doucment对象,从而再对XML文档进行操作。此种情况下,如果 XML 文档特别大,就会消耗计算机的大量内存,并且容易导致内存溢出。

SAX解析允许在读取文档的时候,即对文档进行处理,而不必等到整个文档装载完才会文档进行操作。所以相对更加的灵活。对于xml解析的具体操作,可以查看相应的xml解析器的API文档进行学习。这篇文章只是简单的介绍,就不多说了。

时间: 2024-11-11 18:07:21

Java web基础总结一之—— xml基础的相关文章

Java Web系列:Spring依赖注入基础

一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是可以专注业务逻辑.因此学习Spring Framework在架构和模式方面的结构和原理,对我们在架构和模块级别的理解帮助极大.Spring Framework(参考1)的宗旨是简化Java开发,主要的手段如下: (1)在架构上解耦:通过DI(依赖注入)管理类型依赖,通过AOP分离关注点,减少重复代码

Java Web开发之Servlet、JSP基础

有好多年不搞Java Web开发了,这几天正好国庆放假,放松之余也有兴趣回头看看Java Web开发技术的基础. 我们都知道,Servlet是Java Web开发的重要基础,但是由于Servlet开发相对繁琐,代码量庞大而且不易维护,美工无法参与界面设计开发等不足,于是就诞生了jsp.jsp是对servlet开发模型的重要升级.有了jsp,Java Web开发技术才真正被广泛使用. 一.Servlet 在Java Web开发当中,新建一个类继承(派生)自HttpServlet类即可创建一个Ser

java web学习:三大组件 Listener基础

1.概念 事件源:被监听的对象 .监听器主要监听三个域对象 ,分别是 request  session  servletContext 监听器:用来监听某个对象状态变化的组件 响应行为:监听器监听的对象相应的状态发生变化时出发的动作. 2.Listener分类 在java web中,监听器的种类比较多,可以按照事件源(监听的对象)进行分类,也可以按照监听的动作进行分类.这里按照监听的动作进行分类. (1)监听域对象自身创建和销毁的监听器: ①ServletContextListener接口 监听

(转)Java Web系列:Spring依赖注入基础

一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是可以专注业务逻辑.因此学习Spring Framework在架构和模式方面的结构和原理,对我们在架构和模块级别的理解帮助极大.Spring Framework(参考1)的宗旨是简化Java开发,主要的手段如下: (1)在架构上解耦:通过DI(依赖注入)管理类型依赖,通过AOP分离关注点,减少重复代码

Java Web系列:认证和授权基础

1.认证和授权概述 (1)认证:对用户的身份进行验证. .NET基于的RBS(参考1)的认证和授权相关的核心是2个接口System.Security.Principal.IPrincipal和System.Security.Principal.IIdentity.我们自己实现认证过程,通过Thread.CurrentPrincipal来设置和读取认证结果.认证成功后设置认证状态和标识. Java内置了的JAAS(参考2),核心是javax.security.auth.Subject类和javax

【Java学习系列】第4课--Java Web相关

本文地址 分享提纲: 1.概述 2. Jsp基础 2.1 1.概述 1)[来源和先导] 本文主要的java web的教程来源JSP是 菜鸟教程JSP 和 天码营Java Web.     主要的先导工作来源知乎,请参考 自学Java怎么入门  和 如何系统地学习java web技术 2)[脑图] Java Web思维导图 2. Jsp基础 2.1)[简介] JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以

从Java Web 基础看SSH架构

Java Web开发现在已然成为大型Wed项目的标准,之前一直盲目的使用框架,往往知其然不知其所以然.在经过一段时间的学习与开发,大概掌握了其脉络的基础上,对其做一定总结. 一.Java Web 基础 一个典型的Java Web项目往往包含这些元素:Jsp页面.Servlet.Listener.Filter,以及配置文件web.xml.其中: Jsp和Servlet基本是一回事,主要用来响应客户端的请求.当然Jsp中可以直接嵌入HTML标签,主要还是负责展现. Listener则是负责监听Web

Java Web基础 --- Jsp 综述(上)

摘要: J2EE是一套规范,而Servlet/Jsp是J2EE规范的一部分,是Tomcat的主要实现部分.在最初的应用实践中,当用户向指定Servlet发送请求时,Servlet利用输出流动态生成HTML页面,这导致Servlet开发效率极为低下.JSP技术通过实现普通静态HTML和动态部分混合编码,使得逻辑内容与外观相分离,大大简化了表示层的实现,提高了开发效率.本文以JSP的本质是Servlet为主线,结合JSP转译后所得的Servlet,详细探讨了JSP的原理.执行过程.脚本元素.编译指令

Java Web基础 --- Jsp 综述(下)

摘要: JSP脚本中包含九个内置对象,它们都是Servlet-API接口的实例,并且JSP规范对它们进行了默认初始化.本文首先通过一个JSP实例来认识JSP内置对象的实质,紧接着以基于请求/响应架构应用的运行机制为背景,引出JSP/Servlet的通信方式与内置对象的作用域,并对每个内置对象的常见用法进行深入介绍和总结. 一. JSP 九大内置对象概述及相关概念说明 JSP脚本中包含九个内置对象,这九个内置对象都是 Servlet API 接口的实例,并且JSP规范对它们进行了默认初始化(由 J