Java Web XML

简介: Java Web XML

XML概述

XML是EXtensible Markup Language的缩写,它是一种类似于HTML的标记语言,称为可扩展标记语言。XML用于提供数据描述格式,适用于不同应用程序之间的数据交换,而且这种交换不以预先定义的一组数据结构为前提,增强了可扩展性)

例:

image.png

<?xml version="1.1" encoding="utf-8" ?>
<中国>
  <河北>
    <张家口></张家口>
    <石家庄></石家庄>
  </河北>
  <山西>
    <太原></太原>
    <大同></大同>
  </山西>
</中国>

将text.xml文件使用浏览器打开

image.png

如下图说明xml格式正确

image.png

若将<中国>标签删除,再次打开

如下图说明xml格式错误

image.png

XML与HTML的比较

(1)HTML用于显示数据,XML用于传输和存储数据。

(2)HTML标签不区分大小写,而XML标记严格区分大小写。

(3)HTML可以有多个根元素,而格式良好的XML有且只能有一个根元素。

(4)在HTML中,空格是自动过滤的,而在XML中,空格不会自动过滤。

(5)HTML中的标签是预定义的标签,而XML中的标记可以根据需要自己定义,并且可扩展。

相比较与HYML,XML标签的扩展性更高,但语法要求也更高

XML语法

文档声明

从XML 1.1开始,在一个完整的XML文档中,必须包含一个XML文档的声明,并且该声明必须位于文档的第一行。XML文档声明的语法格式如下所示:

<?xml version="version" encoding="value" standalone="value" ?>

version:用于指定遵循XML规范的版本号。在XML声明中必须包含version属性,且该属性必须放在XML声明中其他属性之前。

encoding:用来指定XML文档所使用的编码集。

standalone:用来指定该XML文档是否和一个外部文档嵌套使用,取值为yes或no。如果设置属性值为yes,说明是一个独立的XML文档,与外部文件无关联;如果设置属性值为no,说明XML文档不独立。

元素定义

XML文档中的主体内容都是由元素(Element)组成的,元素是以树形分层结构排列的,一个元素可以嵌套在另一个元素中。XML文档中有且仅有一个顶层元素,称为文档元素或根元素。元素一般是由开始标签、属性、元素内容和结束标签构成,具体示例如下:

<城市>北京</城市>

如果一个元素中没有嵌套子元素,也没有包含文本内容,称为空元素,比如 < img >< /img >可以简写为< img/ >

属性定义

在XML文档中,可以为元素定义属性。属性是对元素的进一步描述和说明。在一个元素中,可以自定义多个属性,属性是依附于元素存在的,并且每个属性都有自己的名称和取值,具体示例如下:

<售价 单位="元">68</售价>

需要注意的是,在XML文档中,属性的命名规范与元素相同,属性值必须要用双引号(“”)或者单引号(‘’)引起来,否则被视为错误。

注释

注释是为了便于阅读和理解,如果想在XML文档中插入一些附加信息,比如作者姓名、地址或电话等,这些信息是对文档结构或文档内容的解释,不属于XML文档的内容,因此XML解析器不会处理注释内容。XML文档的注释以字符串“< !–”开始,以字符串“-- >”结束。具体语法格式如下所示:

<!-- 注释信息 -->>

DTD约束

约束定义

XML文档中的标签是可以随意定义的,同一本书出现了两种售价,如果仅根据标签名称区分哪个是原价,哪个是会员价,这是很难实现的。为此,在XML文档中,定义了一套规则对文档中的内容进行约束,这套规则称为XML约束。对XML文档进行约束时,同样需要遵守一定的语法规则,这种语法规则就形成了XML约束语言。

DTD约束简述

DTD约束是早期出现的一种XML约束模式语言,根据它的语法创建的文件称为DTD文件。在一个DTD文件中,可以包含元素的定义、元素之间关系的定义、元素属性的定义以及实体和符号的定义。

DTD引入

第1种方式: <!DOCTYPE 根元素名称 SYSTEM  "外部DTD文件的URI"> 
第2种方式: <!DOCTYPE 根元素名称 PUBLIC "DTD名称" "外部DTD文件的URI">

第1种方式用来引用本地的DTD文件;第2种方式用来引用公共的DTD文件,其中“外部DTD文件的URI”指的是DTD文件在本地存放的位置,对于第1种方式,它可以是XML文档的相对路径,也可以是一个绝对路径,对于第2种方式,它是Internet上的一个绝对URL地址。

基本语法

元素是XML文档的基本组成部分,在DTD定义中,每一条<!ELEMENT…>语句用于定义一个元素,基本语法格式如下所示:

<!ELEMENT 元素名称 元素内容>

在上面元素的定义语法格式中,包含了“元素名称”和“元素内容”。其中,“元素名称”是被约束的XML文档中的元素,“元素内容”是对元素包含内容的声明,其内容包括数据类型和符号两部分。

  • 元素内容:
    1)#PCDATA:表示元素中嵌套的内容是普通文本字符串,其中关键字PCDATA是Parsed Character Data的简写。
    2)子元素:说明元素包含其他元素。通常用一对小括号()将元素中要嵌套的一组子元素括起来。 3)混合内容:表示元素既可以包含字符数据,也可以包含子元素。混合内容必须被定义零个或多个。
    4)EMPTY:表示该元素既不包含字符数据,也不包含子元素,是一个空元素。如果在文档中元素本身已经表明了明确的含义,就可以在DTD中用关键字EMPTY表明空元素。
    5)ANY:表示该元素可以包含任何字符数据和子元素。
  • 特殊符号
    问号[?]:表示该对象可以出现0次或1次。
    星号[*]:表示该对象可以出现0次或多次。
    加号[+]:表示该对象可以出现1次或多次。
    竖线[|]:表示列出的对象中选择1个。 逗号[,]:表示对象必须按照指定的顺序出现。
    括号[()]:用于给元素进行分组。
  • 属性
    在DTD文档中,定义元素的同时,还可以为元素定义属性。DTD属性定义的基本语法格式如下所示:
<!ATTLIST 元素名 属性名1 属性类型 设置说明 
        属性名2 属性类型 设置说明 
        ...... > 

在上面属性定义的语法格式中,“元素名”是属性所属元素的名字,“属性名”是属性的名称,“属性类型”则是用来指定该属性是属于哪种类型,“设置说明”用来说明该属性是否必须出现。

  • 设置image.png

Schema约束

简述

同DTD一样,XML Schema也是一种用于定义和描述XML文档结构与内容的模式语言,它的出现克服了DTD 的局限性。

优点

(1)DTD采用的是非XML语法格式,缺乏对文档结构、元素、数据类型等全面的描述。XML Schema采用的是XML语法格式,而且它本身也是一种XML文档,因此,XML Schema语法格式比DTD更好理解。

(2)XML有非常高的合法性要求,XML DTD对XML的描述,往往也被用作验证XML合法性的一个基础,但是XML DTD本身的合法性却缺少较好的验证机制,必需独立处理。XML Schema则不同,它与XML有着同样的合法性验证机制。

(3)XML Schema对名称空间支持得非常好,而DTD几乎不支持名称空间。

(4)DTD支持的数据类型非常有限。

(5)DTD定义约束的能力非常有限,无法对XML实例文档作出更细致的语义限制。

名称空间

一个XML文档可以引入多个约束文档,但是,由于约束文档中的元素或属性都是自定义的,所以在XML文档中,极有可能出现代表不同含义的同名元素或属性,导致名称发生冲突。为此,在XML文档中,提供了名称空间,它可以唯一标识一个元素或者属性。

名称空间的声明就是在XML文档中为某个模式文档的名称空间指定一个临时名称,它通过一系列的保留属性来声明,这种属性的名字必须是以“xmlns”或者以“xmlns:”作为前缀。它与其他任何XML属性一样,都可以通过直接或者使用默认的方式给出。名称空间声明的语法格式如下所示:

<元素名 xmlns:prefixname="URI">

注意:元素名指的是在哪一个元素上声明名称空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素中嵌套的所有元素及其属性。xmlns:prefixname指的是该元素的属性名,它所对应的值是一个URI引用,用来标识该名称空间的名称。需要注意的是,如果有两个URI并且其组成的字符完全相同,就可以认为它们标识的是同一个名称空间。

Schema引入

方法一:使用名称空间引入XML Schema文档 在使用名称空间引入XML Schema文档时,需要通过属性xsi:schemaLocation来声明名称空间的文档,xsi:schemaLocation属性是在标准名称空间“http://www.w3.org/2001/XMLSchema-instance”中定义的,在该属性中,包含了两个URI,这两个URI之间用空白符分隔。其中,第一个URI是名称空间的名称,第二个URI是文档的位置。

方法二:通过xsi:noNamespaceSchemaLocation属性直接指定:xsi:noNamespaceSchemaLocation属性直接指定,noNamespaceSchemaLocation属性也是在标准名称空间“http://www.w3.org/2001/XMLSchema-instance”中定义的,它用于定义指定文档的位置。

Schema语法

  • 元素定义
    Schema和DTD一样,都可以定义XML文档中的元素。在Schema文档中,元素定义的语法格式如下所示:
<xs:element name="名称" type="类型"/>

element用于声明一个元素,名称指的是元素的名称,类型指元素的数据类型。

在XML Schema 中有很多内建的数据类型,其中最常用的有以下几种:

xs:string:表示字符串类型

xs:decimal:表示小数类型

xs:integer:表示整数类型

xs:boolean:表示布尔类型

xs:date:表示日期类型

xs:time:表示时间类型

  • 属性定义
    在Schema文档中,属性定义的语法格式如下所示:
<xs:attribute name="xxx" type="yyy"/>

xxx 指的是属性名称,yyy 指的是属性的数据类型。其中,属性的常用数据类型与元素相同,都使用的是XML Schema中内创建的数据类型。


目录
相关文章
|
30天前
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
使用Java和XPath在XML文档中精准定位数据
|
26天前
|
XML JSON 前端开发
【Web前端揭秘】XML与JSON:数据界的双雄对决,你的选择将如何改写Web世界的未来?
【8月更文挑战第26天】本文深入探讨了XML和JSON这两种广泛使用的数据交换格式在Web前端开发中的应用。XML采用自定义标签描述数据结构,适用于复杂层次数据的表示,而JSON则以键值对形式呈现数据,更为轻量且易解析。通过对两种格式的示例代码、结构特点及应用场景的分析,本文旨在帮助读者更好地理解它们的差异,并根据实际需求选择最合适的数据交换格式。
39 1
|
26天前
|
XML JavaScript Java
【JAVA XML 探秘】DOM、SAX、StAX:揭秘 Java 中 XML 解析技术的终极指南!
【8月更文挑战第25天】本文详细探讨了Java中三种主流的XML解析技术:DOM、SAX与StAX。DOM将XML文档转换为树状结构,便于全方位访问和修改;SAX采取事件驱动模式,适用于大型文件的顺序处理;StAX则兼具DOM和SAX的优点,支持流式处理和随机访问。文中提供了每种技术的示例代码,帮助读者理解如何在实际项目中应用这些解析方法。
65 1
|
16天前
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践
|
22天前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
22 1
|
28天前
|
XML 存储 JavaScript
在 Java 中如何将 ArrayList 转换为 XML
【8月更文挑战第23天】
13 3
|
15天前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
30 0
|
20天前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
25 0
|
20天前
|
Java Maven Android开发
解锁Web开发新技能:从零开始的Struts 2之旅——让你的Java编程之路更加宽广,首个应用实例带你飞!
【8月更文挑战第31天】对于初学者,掌握 Struts 2 框架不仅能提升 Web 开发能力,还能深入了解 MVC 架构。Struts 2 是一个基于 Servlet 的 Java 框架,提供表单验证、文件上传、国际化等功能,便于快速构建易维护的 Web 应用。本文通过示例演示如何从零开始搭建环境并创建一个简单的 Struts 2 项目,包括配置 `struts.xml`、编写 Action 类及视图文件,并配置 web.xml。通过这些步骤,你将学会基本的开发流程,为进一步学习高级功能打下基础。
29 0
|
20天前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
30 0