JavaWeb之XML详解

XML语言

什么是XML?

  XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML。它被设计的宗旨是传输数据,而非显示数据。 XML标签没有被预定义,需要用户自行定义标签。 XML技术是W3C组织(World Wide Web Consortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范。 XML被广泛认为是继Java之后在Internet上最激动人心的新技术。

XML技术用于解决什么问题?

  在现实生活中存在大量有关系的数据,如右图所示。

问题:这样的数据该如何表示并交给计算机处理呢?

XML语言出现的根本目的在于描述向上图那种有关系的数据。

XML是一种通用的数据交换格式。

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

XML中的数据必须通过软件程序来解析执行或显示,如IE;这样的解析程序称之为Parser(解析器)。

<?xml version="1.0" encoding="UTF-8"?>
<中国>
    <北京>
        <海淀></海淀>
        <丰台></丰台>
    </北京>
    <山东>
        <济南></济南>
        <青岛></青岛>
    </山东>
    <湖北>
        <武汉></武汉>
        <荆州></荆州>
    </湖北>
</中国>

XML常见应用:

XML技术除用于保存有关系的数据之外,它还经常用作软件配置文件,以描述程序模块之间的关系。(如后面将要学习到的Struts、Spring和Hibernate都是基于XML作为配置文件的)

在一个软件系统中,通过XML配置文件可以提高系统的灵活性。即程序的行为是通过XML文件来配置的,而不是硬编码。

数据交换:不同语言之间用来交换数据

小型数据库:用来当数据库存储数据。

XML语法:

XML语法:

一个XML文件分为如下几部分内容:

  文档声明 元素 属性 注释 CDATA区 、特殊字符 处理指令(PI:Processing Instruction)

文档声明

在编写XML文档时,需要先使用文档声明来声明XML文档。且必须出现在文档的第一行。并且必须指定

最简单的语法:

<?xml version=“1.0”?>

encoding属性说明文档所使用的字符编码。保存在磁盘上的文件编码要与声明的编码一致。如:

<?xml version=“1.0” encoding=“GB2312”?>

standalone属性说明文档是否独立,即是否依赖其他文档。 如:

<?xml version=“1.0” standalone=“yes”?> 

yes不用引入外部的文件,no需要引入。(不常用)

元素

标签

XML元素指XML文件中出现的标签。

一个标签分为起始和结束标签(不能省略)。一个标签有如下几种书写形式:

  包含标签主体:<mytag>some content</mytag>

  不含标签主体:<mytag/>

一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套。

<mytag1><mytag2></mytag1></mytag2> WRONG!

一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签或孙标签。

标签的空格、换行

对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。

由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的“良好”书写习惯可能要被迫改变。

命名规范

一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:

  区分大小写,例如,<P>和<p>是两个不同的标记。

  不能以数字或“-” (中划线)开头。

  不能以xml(或XML、或Xml 等)开头。

  不能包含空格。

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

属性

一个元素可以有多个属性,每个属性都有它自己的名称和取值,例如:<mytag name=“value” …/>

属性值一定要用引号(单引号或双引号)引起来。

属性名称的命名规范与元素的命名规范相同

元素中的属性是不允许重复的

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

<mytag>
    <name>
        <firstName/>
        <lastName/>
    </name>
</mytag>

注释

XML中的注释语法为:<!--这是注释-->

注意:

  XML声明之前不能有注释

  注释不能嵌套,例如:

  

转义字符

  

注:< 和 & 的符号要用转义字符, > “ ‘ 可以不使用转义字符。

CDATA区

CDATA是Character Data的缩写

作用:把标签当做普通文本内容;

语法:<![CDATA[内容]]>

<![CDATA[

  <itcast>www.itcast.cn</itcast>

]]>

以上红色部分被当做普通文本而不是标签

处理指令

处理指令,简称PI(Processing Instruction)。

作用:用来指挥软件如何解析XML文档。

语法:必须以“<?”作为开头,以“?>”作为结尾。 常用处理指令:

常用处理指令:  

  XML声明:

    <?xml version=“1.0” encoding=“GB2312”?>

  xml-stylesheet指令: 作用:指示XML文档所使用的CSS样式XSL。

    <?xml-stylesheet type=“text/css” href=“some.css”?>

    注:对中文命名的标签元素不起作用

XML语法规则总结

  所有 XML 元素都须有关闭标签

  XML 标签对大小写敏感 XML

  必须正确地嵌套顺序

  XML 文档必须有根元素(只有一个)

  XML 的属性值须加引号

  特殊字符必须转义 --- CDATA

  XML 中的空格、回车换行会解析时被保留

XML约束:

为什么需要约束

 1.XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错。(如:Tomcat)

 2.XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束。

  两个概念:

    格式良好的XML:遵循XML语法的XML

    有效的XML:遵循约束文档的XML

 3.总之:约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。

XML约束概述

1.什么是XML约束

  在XML技术里,可以编写一个文档来约束一个XML

  文档的书写规范,这称之为XML约束。

2.为什么需要XML约束

3.常用的约束技术

  XML DTD

  XML Schema

DTD约束快束入门

DTD概述

  1.DTD(Document Type Definition),全称为文档类型定义。

  

  2.书写完成DTD,并且约束成功后,可以总结书写的过程,更方便记忆。

  复杂标签:<!ELEMENT 标签名 (子节点)>

  简单标签:<!ELEMENT 标签名 (#PCDATA)>

  引入DTD:<!DOCTYPE 根节点 SYSTEM “dtd的地址”>

将DTD与XML文档关联三种方式

  DTD约束即可以作为一个单独的文件编写,也可以在XML文件内编写

  1.使用内部DTD

    <!DOCTYPE 根节点 [ DTD的代码 ]>

  2.使用外部DTD

    <!DOCTYPE 根节点 SYSTEM “DTD的地址” >

  3.使用网络DTD

    <!DOCTYPE 根节点 PUBLIC “DTD的名称” “DTD的地址” >

    常见的使用网络DTD约束有 Struts2的框架

在xml文件内编写DTD

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 书架 [
    <!ELEMENT 书架 (书+)>
    <!ELEMENT 书 (书名,作者,售价)>
    <!ELEMENT 书名 (#PCDATA)>
    <!ELEMENT 作者 (#PCDATA)>
    <!ELEMENT 售价 (#PCDATA)>
]>
<书架>
    <书>
        <书名>Java就业培训教程</书名>
        <作者>张孝祥</作者>
        <售价>39.00元</售价>
    </书>
    ...
</书架>

引入外部DTD文档

  XML使用DOCTYPE声明语句来指明它所遵循的DTD文档,有两种形式:

    当引用的DTD文档在本地时,采用如下方式:  

    <!DOCTYPE 根元素 SYSTEM “DTD文档路径”>

    如:

<!DOCTYPE 书架 SYSTEM “book.dtd”>

    当引用的DTD文档在公共网络上时,采用如下方式:   

    <!DOCTYPE 根元素 PUBLIC “DTD名称” “DTD文档的URL”>

    如:

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">

DTD约束语法细节

  元素定义 属性定义 实体定义

元素(ELEMENT)定义

  在DTD文档中使用ELEMENT关键字来声明一个XML元素。

  语法:<!ELEMENT 元素名称 使用规则> 

    使用规则:

      (#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)

      EMPTY:用于指示元素的主体为空。比如<br/>

      ANY:用于指示元素的主体内容为任意类型。

      (子元素):指示元素中包含的子元素

    定义子元素及描述它们的关系:

      如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。

       如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)

      如果子元素用“|”分开,说明任选其一。

       如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)

      用+、*、?来表示元素出现的次数

        如果元素后面没有+*?:表示必须且只能出现一次

        +:表示至少出现一次,一次或多次

        *:表示可有可无,零次、一次或多次

        ?:表示可以有也可以无,有的话只能有一次。零次或一次 如: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

时间: 2024-08-14 22:36:29

JavaWeb之XML详解的相关文章

JAVA学习篇--javaweb之Filter详解

在DRP项目中,多次提到了Filter,它解决了字符集的统一设置以及统一控制简单WebCache,从中我们可以体会到,它给我们带来的好处不仅仅是减少代码量这么简单,它的出现避免了我们每个页面重复的编写相同的代码,减少了我们的工作量,而且给维护带来了极大的便利,那么它是如何实现统一管理的呢?既然它能统一管理某些重复的操作,那么它和AOP有什么关系呢? Filter简介 ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过

javaweb之Filter详解

一.概念:Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. 二.Filter简介Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filte

Ant之build.xml详解

Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令.当编译Linux内核及一些软件的源程序时,经常要用这个命令.Make命令其实就是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷.最初Ant开发者在开发跨平台的应用时,用样也是基于这些缺陷对Ant做了更好的设计. Ant 与 makefile Makefile有一些不足之处,比如

Tomcat主配置文件Server.xml详解

Tomcat主配置文件Server.xml详解 1.软件版本 [[email protected] META-INF]# java -version java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) 2.server.xml组件类别 顶级组件:位于整个配置的

JavaEE学习之Maven配置文件pom.xml详解(转)

一.引言 (本文转载自:http://blog.csdn.net/longeremmy/article/details/9670619) 使用maven有一些时间了,一直没有好好将pom配置文件每个节点的意义好好了解一番.今天突然想来了解下:pom- project object model 项目对象模型.顾名思义,他是用来描述项目信息的,以及构建方式,依赖等.网上有一篇文章写的很详细,这里就借用一下,以备日后使用. 二.详解 1 <project xmlns="http://maven.

Web.xml详解(转)

这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢迎大家一起讨论. ---题记 一.            Web.xml详解: (一)  web.xml加载过程(步骤) 首先简单说一下,web.xml的加载过程. 当我们去启动一个WEB项目时,容器包括(JBoss.Tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来. l  启动WEB项目的时候,容器首先会去它的配置文件web.xml读取两个节点: 

转载 logback的使用和logback.xml详解 http://www.cnblogs.com/warking/p/5710303.html

logback的使用和logback.xml详解 一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging logback-access:访问模块与Servlet容器集

Android——TextView属性XML详解

Android_TextView属性XML详解 博客分类: android Java代码   属性名称    描述 android:autoLink    设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all) android:autoText    如果设置,将自动执行输入值的拼写纠正.此处无效果,在显示输入法并输入的时候起作用. android:bufferType  指定getText()方式取

SAX解析XML 详解

JAVA 解析 XML 通常有两种方式,DOM 和 SAX.DOM 虽然是 W3C 的标准,提供了标准的解析方式,但它的解析效率一直不尽如人意,因为使用DOM解析XML时,解析器读入整个文档并构建一个驻留内存的树结构(节点树),然后您的代码才可以使用 DOM 的标准接口来操作这个树结构.但大部分情况下我们只对文档的部分内容感兴趣,根本就不用先解析整个文档,并且从节点树的根节点来索引一些我们需要的数据也是非常耗时的.     SAX是一种XML解析的替代方法.相比于文档对象模型DOM,SAX 是读