JavaSE XML语法规则和文档约束介绍

news2024/11/15 13:02:17

文章目录

  • XML
    • XML基本介绍
    • XML创建和语法规则
    • XML文档约束
      • 认识文档约束
      • DTD约束(了解)
      • schema约束(了解)

XML

XML基本介绍

XML概述:

XML是可扩展标记语言(eXtensible Markup Language)的缩写,它是一种可以自定义数据的表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据。

XML写法如下:

<?xml version="1.0" encoding="UTF-8"?>
<data>
		<sender>张三</sender>
    <receiver>李四</receiver>
		<src>
						<addr>北京</addr>
        		<date>2022-11-11 11:11:11</date>
    </src>
    <current>武汉</current>
    <dest>广州</dest>
</data>

XML的几个特点和使用场景:

一是纯文本,默认使用UTF-8编码;二是可嵌套;

如果把XML内容存为文件,那么它就是一个XML文件。

XML的使用场景:XML内容经常被当成消息进行网络传输如下,或者作为配置文件用于存储系统的信息。

在这里插入图片描述

XML创建和语法规则

XML创建:

就是创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello_world.xml

IDEA创建XML文件的操作步骤:

XML文件创建是非常简单的, 和创建一个txt文本是什么区别的, 只不过文件的后缀名.xml

在这里插入图片描述

XML语法规则:

XML文件的后缀名为:xml

文档声明必须是第一行

<?xml version="1.0" encoding="UTF-8" ?>
version:XML默认的版本号码、该属性是必须存在的
encoding:本XML文件的编码格式

XML的标签(元素)规则:

标签由一对尖括号和合法标识符组成: <name></name>,必须存在一个根标签,有且只能有一个

标签必须成对出现,有开始,有结束: <name></name>

特殊的标签可以不成对,但是必须有结束标记,如: <br/>

标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来<student id = “1"></name>

标签需要正确的嵌套

演示写法:

<?xml version="1.0" encoding="UTF-8" ?>
<student>
    <name>小红</name>
    <sex></sex>
    <age>18</age>
    <info>
        <address>四川</address>
        <phone>18810010902</phone>
    </info>
</student>

XML的其他组成:

XML文件中可以定义注释信息:<!-- 注释内容 -->

<!--我是一个注释-->

由于XML直接写特殊符号会冲突, 所以XML文件中可以存在以下特殊字符:

  • &lt; 表示小于符号(<)
  • &gt; 表示大于符号(>)
  • &amp; 表示和号(&)
  • &apos; 表示单引号(’ ')
  • &quot; 表示双引号(" ")

XML文件中可以存在CDATA区(快捷输入: CD): \<![CDATA[ …内容… ]]>

  • 在该内容中写特殊符号就不会冲突
<student>
    <![CDATA[
        < > "" ''
    ]]>
</student>

XML文档约束

认识文档约束

问题:由于XML文件可以自定义标签,导致XML文件可以随意定义,程序在解析的时候可能出现问题, 别人拿到文件可能并不知道如何进行解析

在这里插入图片描述

什么是文档约束呢?

文档约束:是用来限定xml文件中的标签以及属性应该怎么写, 以此强制约束程序员必须按照文档约束的规定来编写xml文件。

文档约束的分类(了解即可, 约束文件一般是不用自己写的):

DTD

schema

DTD约束(了解)

需求:

利用DTD文档约束, 约束一个XML文件

实现步骤如下:

编写DTD约束文档,后缀必须是.dtd

<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>

在需要编写的XML文件中导入该DTD约束文档, 导入DTD约束文档后, XML只能按照约束的规定编写XML文件的内容。

<?xml version="1.0" encoding="UTF-8" ?>
<!--导入DTD约束该文件-->
<!DOCTYPE 书架 SYSTEM "data.dtd">
<书架>
    <>
        <书名>程序设计</书名>
        <作者>作者a</作者>
        <售价>99.9</售价>
    </>
</书架>

注意: DTD可以约束XML文件的编写格式, 不能约束具体的数据类型。

schema约束(了解)

文档约束 - shema:

schema可以约束具体的数据类型,约束能力上更强大。

schema本身也是一个xml文件,本身也受到其他约束文件的要求,所以编写的更加严谨

需求

利用schema文档约束,约束一个XML文件的编写。

实现步骤如下

编写schema约束文档,后缀必须是.xsd,具体的形式如下。

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.itcast.cn"
        elementFormDefault="qualified" >
    <!-- targetNamespace:申明约束文档的地址(命名空间)-->
    <element name='书架'>
        <!-- 写子元素 -->
        <complexType>
            <!-- maxOccurs='unbounded': 书架下的子元素可以有任意多个!-->
            <sequence maxOccurs='unbounded'>
                <element name=''>
                    <!-- 写子元素 -->
                    <complexType>
                        <sequence>
                            <element name='书名' type='string'/>
                            <element name='作者' type='string'/>
                            <element name='售价' type='double'/>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>

在需要编写的XML文件中导入该schema约束文档, 按照约束内容编写XML文件的标签。

<?xml version="1.0" encoding="UTF-8" ?>
<!--导入schema约束文档-->
<书架 xmlns="http://www.itcast.cn"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.itcast.cn data.xsd">
    <>
        <书名>程序设计</书名>
        <作者>李四</作者>
        <!--严格要求了数据类型-->
        <售价>40.9</售价>
    </>
</书架>

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

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

相关文章

【mysql数据库】

目录SQL数据库分页聚合函数表跟表之间的关联关系SQL中怎么将行转成列SQL注入将一张表的部分数据更新到另一张表WHERE和HAVING的区别索引索引分类如何创建及保存MySQL的索引&#xff1f;怎么判断要不要加索引&#xff1f;索引设计原理只要创建了索引&#xff0c;就一定会走索引吗…

ESP-01S通过AT指令上报数据到阿里云物模型

ESP-01S使用AT指令上报数据到阿里云物模型 上篇文章介绍了如何用AT指令连接阿里云并进行通信&#xff1a;https://blog.csdn.net/weixin_46251230/article/details/128995530 但最终需要将传感器数据上报到云平台显示&#xff0c;所以需要建立阿里云物模型 阿里云平台建立物…

代码随想录第62天(单调栈):● 739. 每日温度 ● 496.下一个更大元素 I

今天开启单调栈的篇章&#xff0c;一般什么时候采用单调栈&#xff1f;通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置。 一、每日温度 题目描述&#xff1a; 思路和想法&#xff1a; 这里单调栈里只放数组下标&#xff0c;再了…

删除Android Studio中重复的JDK配置

问题 可能因为一些不经意的操作&#xff0c;导致如下这种情况&#xff1a;出现多余重复的JDK路径配置&#xff0c;其实指向的是同一个路径。 强迫症犯了之后&#xff0c;就会想怎么干掉这个&#xff08;2&#xff09;。 解决 第一步&#xff1a;先打开你最近打开的项目&…

开篇之作——闲聊几句AUTOSAR(2)

开篇之作——闲聊几句AUTOSAR 我是穿拖鞋的汉子,魔都中坚持长期主义的工科男! 在上一篇文章中主要介绍了啥是AUTOSAR,AUTOSAR要干点啥,以及AUTOSAR的发展历史。接下来在本文中将继续介绍: -> AUTOSAR的合作伙伴关系; -> 组织架构; -> 基础标准规范。 言归正…

微信公众号网页在本地开发模式下如何使用正式环境的域名来调试

微信公众号网页在本地开发模式下如何使用正式环境的域名来调试&#xff1f; 鄙人之前也不知道&#xff0c;网上搜了一下&#xff0c;看到的几篇文章都是要使用代理&#xff0c;有用Nginx的&#xff0c;还有自己写代理的。主要是按照步骤做了并不行。于是自己折腾了一下&#x…

缓存中间件Caffeine超详细源码解读

读源码是一件非常复杂、困难、枯燥的过程&#xff0c;这个复杂过程我给大家踩了&#xff0c;各位看官躺平看就行啦初始化入口&#xff1a;//典型的工厂模式&#xff0c;初始化一个caffeine对象 Caffeine.newBuilder();CheckReturnValue public static Caffeine<Object, Obje…

(考研湖科大教书匠计算机网络)第四章网络层-第三节1:IPv4地址概述

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;IPv4地址概述二&#xff1a;IPv4地址表示方法&#xff08;1&#xff09;概述&#xff08;2&#xff09;8位无符号二进制数转十进制正整数&#xff…

大数据工具Maxwell的使用

1.Maxwell简介 Maxwell 是由美国Zendesk公司开源&#xff0c;用Java编写的MySQL变更数据抓取软件。它会实时监控Mysql数据库的数据变更操作&#xff08;包括insert、update、delete&#xff09;&#xff0c;并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台。 官…

Elasticsearch7.8.0版本进阶——路由计算

目录一、路由计算1.1、路由计算的前提理解1.2、路由计算的概述1.3、路由计算的概述一、路由计算 1.1、路由计算的前提理解 当索引一个文档的时候&#xff0c;文档会被存储到一个主分片中。Elasticsearch 如何知道一个文档应该存放到哪个分片中呢&#xff1f;当我们创建文档时…

mycat连接mysql 简单配置

mycat三个配置文件位于conf下 可通过Notepad操作 首先配置service.xml中的user标签&#xff0c;设置用户名&#xff0c;密码&#xff0c;查询权限&#xff0c;是否只读等 只是设置了root用户&#xff0c;有所有权限 配置schema.xml <?xml version"1.0"?&g…

FPGA开发软件(vivado + modelsim)环境搭建(附详细步骤)

本文详细介绍了vivado软件和modelsim软件的安装&#xff0c;以及vivado中配置modelsim仿真设置&#xff0c;每一步都加文字说明和图片。一、软件安装包下载1、vivado vivado版本很多&#xff0c;目前最新的已更新到vivado2022.2&#xff0c;版本越高&#xff0c;安装包越大&…

PTA甲级-1010 Radix c++

文章目录Input Specification:Output Specification:Sample Input 1:Sample Output 1:Sample Input 2:Sample Output 2:一、题干大意![在这里插入图片描述](https://img-blog.csdnimg.cn/68d84d3ea86e4aaab002152ae8472e05.png#pic_center)二、题解要点三、具体实现总结Given a…

【呕心沥血】整理全栈自动化测试技术(三):如何编写技术方案

前面两篇笔记我介绍了自动化测试前期调研注意事项和前置准备阶段切入点&#xff0c;有同学在后台提问&#xff1a; “做完前期的调研和准备工作&#xff0c;领导要求写一个落地方案并评审&#xff0c;自动化测试的落地方案该怎么写”&#xff1f; 首先这个要求我觉得挺正常&a…

2023.02.12 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.本文贡献5.相关工作5.1 Temporal Recommendation5.2 Sequential Recommendation6.方法6.1 Problem Formulation6.2 Input Embedding6.3 Self-Attention Structure6.4 Model Training7.实验7.1 数据集7.2 实验结果7.3 多时间嵌入的效果…

Vulkan教程(12): Graphics pipeline Introduction (图形管线概要)

Vulkan官方英文原文&#xff1a;https://vulkan-tutorial.com/Drawing_a_triangle/Graphics_pipeline_basics/Introduction对应的Vulkan技术规格说明书版本&#xff1a; Vulkan 1.3.2Over the course of the next few chapters, well be setting up a graphics pipeline that i…

你知道MySQL中like 关键字也能用索引嘛?

上篇文章中&#xff0c;我和大家分享了索引的两个使用规则&#xff1a; 索引上不要使用函数运算。使用覆盖索引避免回表。 当然&#xff0c;凡事有个度&#xff0c;用哪一种策略也要结合具体的项目来定&#xff0c;不能为了 SQL 优化而抛弃了业务。 在前文的基础上&#xff0…

Mac安装Homebrew排坑大全..

官网&#xff1a;https://brew.sh/BACKGROUND: 安装Homebrew嘎嘎报错&#xff01;question one网络不通&#xff0c;需要配置一下github.com的hostError&#xff1a;fatal: unable to access https://github.com/Homebrew/homebrew-core/: error:02FFF036:system library:func(…

电子电气架构——基于CANoe实现两路CAN线间网关仿真

基于CANoe实现两路CAN线间网关仿真 魔都的天气也很魔性,白天酷热无比,现在晚上九点又狂风大作,凉爽宜人。 天气的不可预见性与个人生活极其相似,都有随机、不可控的成分,自己能做的就是不懊悔昨天已发生,不寄托于未来未发生,只想过好当下这时光。 老规矩,分享一段喜…

【不知道是啥】浅保存哈

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…