JavaWeb开发(六)XML介绍

1. XML介绍

1.1. 什么是XML

  (1)XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种很像HTML的标记语言。
  (2)XML 的设计宗旨是传输数据(目前主要是作为配置文件),而不是显示数据。
  (3)XML 标签没有被预定义。您需要自行定义标签。
  (4)XML 被设计为具有自我描述性。
  (5)XML是W3C的推荐标准。
  可在不同的平台中使用,比如javaphp都可以使用xml作为文件配置和数据传输的工具。

1.2. 常见应用场景

  XML 应用于 Web 开发的许多方面,常用于简化数据的存储和共享。
  (1)存储数据,配置相关信息(目前主要应用范围)。
在这里插入图片描述
  (2)传输数据的载体(现在很少使用,基本使用json传输数据。

1.3. XML的结构

  XML是一种树状结构
  XML 文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

<root>
<child>
<subchild>.....</subchild>
</child>
</root>

1.4. XML语法

  (1)所有XML元素都须有关闭标签(在HTL,经常会看到没有关书标签的元素)
  (2)XML, 标签对大小写敏感,这是错误的</message)
  (3)XML文档必须有根元素
  (4)XML的属性值须加引号<note date=”12/11/2007">
  (5)XML中的注释<!–This isacomment –
  (在XML中编写注释的语法与 HTML的语法很相似)

1.5. XML元素

1.5.1. 什么是XML元素

  XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
  一个元素可以包含:
  (1)其他元素
  (2)文本
  (3)属性

1.5.2. XML命名规则

  XML 元素必须遵循以下命名规则;
  (1)名称可以包含字母、数字以及其他的字符;
  (2)名称不能以数字或者标点符号开始;
  (3)名称不能以字母xml(或者XML、Xml 等等)开始;
  (4)名称不能包含空格。

1.6. XML属性

1.6.1. 什么是XML属性

  XML元素具有属性,类似HTML。
  属性(Attribute)提供有关元素的额外信息。

1.6.2. 属性使用规范

  XML,属性必须加引号。
  且不建议是用属性,因为元素基本可以完成属性的功能,且更易读。

1.7. XML解析

1.7.1. XML解析概述

  当我们将数据存储在xm1文件之后,我们希望通过程序去读取xm1的内容,通过java基础的I0也是可以读取的,但是十分的麻烦。因此出现了一些解析的方式。
  常见的有:DOM解析,SAX解析。
  由于目前xml很少作为传输数据的方式,所以解析相关的方法用的也很少,作为了解内容。

1.7.2. 解析方式

  (1)DOM解析:将整个xm1文件加载到内存中,并解析成一个Docunment对象。
  优点:无素与元素之间保留了层级结构关系,可以进行增删改查。
  缺点:xml文件过大时,可能产生内存溢出问题。
  (2)SAX解析:速度更快,更有效的方式。它会逐行扫描文档,在扫描的同时进行解析。
  优点:速度更快,可处理大的文件。
  缺点:只能读取,无法修改,读取后将释放资源。

1.8 .XML约束

1.8.1. 什么是DTD

  DTD:文档类型定义,用来约束XML文件,规定文档中元素名称,子元素的名称及顺序,元素的属性等。
  我们并不要求学会编写DTD约束文档,能够看懂即可。

1.8.2. Schema

1.8.2.1. 什么是Schema

  Schema是XML文档约束,它是DTD约束的替代品,相较于DTD更强大扩展名市xsd,通过命名空间引入使用。

1.8.2.2. 命名空间

  如果一个文档中有多个Schema文件,而些文件如果定义了相同的名称的元素,就会出现名字冲突。这就类似于java中如果没有包名,那么class文件就很容易冲突是一样的道理。
  引入方式:

默认隐式:xmins="http://xmns.jcp.org/xm1/ns/javaee"
显式方式:xmIns:xsd="http://xmlns.jcp.org/xml/ns/javaee"

在这里插入图片描述

1.8.2.3. 使用Schema

  (1)将约東文件copy到对应工程中。
  (2)打开Schema约束copy命名空间。
  (3)编写xm1文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/65159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用shell把(1到100)100个整数写入到二进制文件

author: hjjdebug date: 2025年 01月 05日 星期日 16:14:41 CST description: 用shell把(1到100)100个整数写入到二进制文件 1. 问题分析(需求分析) 在c语言下, 整数int 是按4个字节存储的,能表示最大0xffffffff的范围 但shell并没有一条命令能够实现把一个整数写入二进制文件…

SpringBoot下载文件的几种方式

小文件&#xff1a;直接将文件一次性读取到内存中&#xff0c;文件大可能会导致OOM GetMapping("/download1")public void download1(HttpServletResponse response) throws IOException {// 指定要下载的文件File file new File("C:\\Users\\syd\\Desktop\\do…

Flink使用

Window下启动支持 下载或复制老版本的放在bin目录下即可&#xff1b; flink.bat echo off setlocalSET bin%~dp0 SET FLINK_HOME%bin%.. SET FLINK_LIB_DIR%FLINK_HOME%\lib SET FLINK_PLUGINS_DIR%FLINK_HOME%\pluginsSET JVM_ARGS-Xmx512mSET FLINK_JM_CLASSPATH%FLINK_LI…

Python基础知识回顾-数据结构

Tuple 在 Python 中&#xff0c;我们经常使用 Tuple 来将相关数据分组。Tuple 指的是有序且不可变的元素集合。 形式&#xff1a;通常以逗号分隔的元素写在括号"() "中。 数据类型和索引&#xff1a;包含 String、整数和浮点数&#xff0c;并使用正索引和负索引访问…

8. C++ 面向对象之特性一(封装)

面向对象主要包括三大类&#xff1a;封装&#xff0c;继承&#xff0c;多态 1.类和对象 c认为&#xff0c;万物皆为对象&#xff0c;对象上有其属性和行为 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重...&#xff0c;行为有走、跑、跳、吃饭、唱歌... 车也可以作…

WebRtc02:WebRtc架构、目录结构、运行机制

整体架构 WebRtc主要分为三层&#xff1a; CAPI层&#xff1a;外层调用Session管理核心层&#xff1a;包括视频引擎、音频引擎、网络传输 可由使用者重写视频引擎&#xff1a;编解码器、视频缓存、视频增强音频引擎&#xff1a;编解码器、音频缓存、回音消除、降噪传输&#x…

【Qt】快速添加对应类所需的头文件包含

快速添加对应类所需的头文件包含 一&#xff0c;简介二&#xff0c;操作步骤 一&#xff0c;简介 本文介绍一下&#xff0c;如何快速添加对应类所需要包含的头文件&#xff0c;可以提高开发效率&#xff0c;供参考。 二&#xff0c;操作步骤 以QTime类为例&#xff1a; 选中…

Apache MINA 反序列化漏洞CVE-2024-52046

漏洞描述&#xff1a; Apache MINA 是一个功能强大、灵活且高性能的网络应用框架。它通过抽象网络层的复杂性&#xff0c;提供了事件驱动架构和灵活的 Filter 链机制&#xff0c;使得开发者可以更容易地开发各种类型的网络应用。 Apache MINA 框架的 ObjectSerializationDeco…

服务器docker配置过程

1.docker安装 参考官方文档&#xff1a;https://docker.cadn.net.cn/manuals/engine_install_ubuntu 2.docker镜像源替换 官方文档&#xff1a;https://cloud.tencent.com/document/product/1207/45596 镜像源根据你租了哪家的去找官方文档即可。

RabbitMQ通过代码创建交换机和队列

常见交换机 RabbitMQ提供的交换机一共的四种&#xff0c;分别是&#xff1a; 1. Fanout&#xff1a;采用广播形式来发送消息&#xff0c;会将消息路由到所有绑定了的队列之中。 2. Direct&#xff1a;通过Binding Key与队列绑定&#xff0c;生产者在发送信息的时候会通过Routin…

js es6 reduce函数, 通过规格生成sku

const specs [{ name: 颜色, values: [红色, 蓝色, 绿色] },{ name: 尺寸, values: [S, M, L] } ];function generateSKUs(specs) {return specs.reduce((acc, spec) > {const newAcc [];for (const combination of acc) {for (const value of spec.values) {newAcc.push(…

WPF通过反射机制动态加载控件

Activator.CreateInstance 是 .NET 提供的一个静态方法&#xff0c;它属于 System 命名空间。此方法通过反射机制根据提供的类型信息。 写一个小demo演示一下 要求&#xff1a;在用户反馈界面点击建议或者评分按钮 弹出相应界面 编写MainWindow.xmal 主窗体 <Window x:C…

宽带、光猫、路由器、WiFi、光纤之间的关系

1、宽带&#xff08;Broadband&#xff09; 1.1 宽带的定义宽带指的是一种高速互联网接入技术&#xff0c;通常包括ADSL、光纤、4G/5G等不同类型的接入方式。宽带的关键特点是能够提供较高的数据传输速率&#xff0c;使得用户可以享受到稳定的上网体验。 1.2 宽带的作用宽带是…

Pytest钩子函数,测试框架动态切换测试环境

在软件测试中&#xff0c;测试环境的切换是个令人头疼的问题。不同环境的配置不同&#xff0c;如何高效切换测试环境成为许多测试开发人员关注的重点。你是否希望在运行测试用例时&#xff0c;能够动态选择测试环境&#xff0c;而不是繁琐地手动修改配置&#xff1f; Pytest 测…

印象笔记07——试一试PDF标注

印象笔记07——试一试PDF标注 [!CAUTION] 根据第六期&#xff0c;我再次查询了资料&#xff0c;印象笔记还是有一些可圈可点的功能的&#xff08;当然部分有平替&#xff09;&#xff0c;针对会员作用&#xff0c;开发使用场景虽然是逆向的&#xff0c;但我坚信这是一部分人的现…

【Vue】分享一个快速入门的前端框架以及如何搭建

先上效果图: 登录 菜单: 下载地址: 链接&#xff1a;https://pan.baidu.com/s/1m-ZlBARWU6_2n8jZil_RAQ 提取码&#xff1a;ui20 … 主要是可以自定义设置token,更改后端请求地址较为方便。 应用设置: 登录与token设置: 在这里设置不用登录,可以请求的接口: request.js i…

通过串口通信控制led灯的亮灭

初始化led灯的gpio接口控制灯的亮灭 初始化uart1串口 将gpio9和gpio10设置为复用模式进行串口通信 通过串口的输入输出函数实现串口通信控制led灯的亮灭

计算机xinput1_4.dll丢失怎么修复?

电脑运行时常见问题及修复指南 作为软件开发从业者&#xff0c;深知电脑在日常使用中难免会遇到各种问题&#xff0c;如文件丢失、文件损坏和系统报错等。这些问题不仅影响工作效率&#xff0c;还可能带来数据丢失的风险。本文将详细介绍一些常见问题及其解决办法&#xff0c;…

DeepSeek V3“报错家门”:我是ChatGPT

搜 &#xff1a;海讯无双Ai 要说这两天大模型圈的顶流话题&#xff0c;那绝对是非DeepSeek V3莫属了。 不过在网友们纷纷测试之际&#xff0c;有个bug也成了热议的焦点—— 只是少了一个问号&#xff0c;DeepSeek V3竟然称自己是ChatGPT。 甚至让它讲个笑话&#xff0c;生成…

C++:范围for

范围for&#xff08;range-based for&#xff09;是C的一种循环结构&#xff0c; 是在 C11 这个标准中引入的&#xff0c;这种类型的for循环使得遍历数组、容器中的元素更加简便和直观。 一、范围for语法 for ( 类型 变量名 : 数组名 ) 语句 //多条语句需要加⼤括号 示例&#…