我的学习之路_第十六章_xml

author author     2022-09-05     496

关键词:

【XML】

可扩展的标记语言

作用:存放数据、配置文件

【XML的语法】

xml的文件扩展名必须为: xml

xml的内容必须满足以下要求:

1.固定的文档声明
2.合格的元素和属性
3.正确的注释
4.符合要求的特殊字符编写规则

●文档声明 ( <?xml version="1.0" encoding = "UTF-8" ?> )

1.文档声明必须以<?xml 开头, 以?>结束
2.文档声明必须从文档的0行0列位置开始
3.文档声明的两个属性:
a. version: 指定的xml文档版本.必须属性
b. encoding: 指定当前文档的编码. 可选属性,默认值为:UTF-8

●元素 <bean> </bean>

1.元素是xml文档中重要的组成部分,
2.普通元素的结构开始标签、元素体、结束标签组成.
3.元素体:元素体可以是元素,也可以是文本.
4.空元素:空元素只有开始标签,没有结束标签,但元素必须自己闭合.<a/>
5.元素命名:
a) 区分大小写
b) 不能使用空格键,不能使用冒号
c) 不建议以xml开头,不管大写还是小写.
6.格式良好的xml文档,必须只有一个根元素.(文档声明下来的第一个元素就是根元素)

●属性(attribute)
<Person id="g001" name="二狗" ></Person>
1.属性是元素的一部分,必须出现在元素开始标签中,必须用空格分开,多个元素之间也用空格隔开
2.属性的定义格式:属性名=属性值,其中属性值必须用单引或者双引
3.一个元素可以有0-n个属性,但是一个元素中,不能出现同名属性
4.属性名不能使用空格,冒号等特殊符号,而且必须以字母开头
5.多个属性之间没有先后顺序

●注释

xml的注释,以<!-- 开始, 以--> 结束.注释内容不会被xml解析器解析!


【xml的转义字符】

< &lt;

> &gt;

" &quot;

' &apos;

& &amp;

列入 1<3 在xml中 1 &lt;3

【CDATA】

格式 <![CDATA[

里面可以写任何内容,
都会以文本的格式出现
里面的出现的字符都无需转义

]]>

作用:提高了xml文档的可读性

【XML约束】

在xml技术里,可以编写一个文档来约束一个xml文档的书写规范,这称之为xml约束

常见的约束有 DTD , Schena

DTD语法:

▲ 文档声明
1.内部DTD,在xml文档内部嵌入,值对当前xnl有效
2.外部DTD- 本地DTD,DTD文档在本地系统上,公司内部自己项目使用.(SYSTEM )
3.外部DTD- 公共DTD,DTD文档在网络上,一般都有框架提供(PUBLIC )

公共DTD包含5部分内容:
1.<!DOCTYPE:固定格式
2.beans : 规定根元素叫beans
3.PUBLIC : 公共的,说明DTD 约束文档来源网络
4."-//SPRING//DTD BEAN 2.0//EN": 约束文档的名称,有框架写好提供.
5.http://www.springframework.org/dtd/spring-beans-2.0.dtd:约束文档在网络上的位置

▲ 元素申明

? 表示该对象可以出现0次或者1次,
+ 表示该对象可以出现1次或者1次以上
* 表示可以出现任意次数
( ) 一组数据
| 选择关系,只能在多个元素之间选择一个
, 顺序关系,规定:a,b,c 写xml文档只能按照abc顺序编写

【使用DTD约束文档的步骤】

1.每一个DTD约束文档中都会有一行代码以 <!DOCTYPE开头,赋值过来放在xml文档中
a.!DOCTYPE : 固定的DTD约束文档的格式
b.beans : 规定xml文档中的根元素只能叫beans
c.SYSTEM : 系统, dtd约束文档中来源本地的操作系统
d: "bean.dtd" : 约束文档的位置,我们使用的约束文档在当前文件夹下,可以使用"bean,dtd"
2.根据根元素的名字,写出根元素
3.鼠标放在根元素上/或者按F2,根据提示写出xml文档

Schema约束

▲命名空间

命名空间是用来处理元素和属性的名称冲突问题


约束文档和xml的关系
约束 约束
官方文档---->自定义schema文档---->xml文档


声明命名空间:

默认命名空间:<xxx xmlns=" " >, 使用<标签>
显式命名空间:<xxx xmlns:别名=" "> , 使用<别名:标签>

【Schema 约束文档的使用】:

1.每一个schema约束文档,都必须有一个命名空间(namespace)
起名要求:全球唯一
使用域名(网址) 命名:http://www.itcast.cn/web01/01
bean-schema.xsd文档中的命名空间
targetNamespace="http://itcast.cn/bean"
2.在xml文档中声明命名空间
默认声明:
xmlns="http://www.itcast.cn/bean"
<bean></bean>
显示声明:
xmlns:my="http://www.itcast.cn/bean"
<my:bean></my:bean>
3.声明schema约束文档的位置
先声明官方文档的位置
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
根据官方文档声明自定义schema文档的位置
xsi:chemaLocation="http://www.itcast.cn/bean bean-schema.xsd"
http://www.itcast.cn/bean : 命名空间
bean-schema.xsd:schema文档的位置

【XML解析】

开发中比较常见的解析方式有三种:
1.DOM : 要求解析器把整个xml文档装载到内存,并解析成一个Document对象
a) 优点 : 元素与元素之间保留结构关系,所以可以进行增删改查操作.
b) 缺点 : xml文档过大,可能出现内存溢出显示
2.SAX : 是一种速度更快,更有效的方法.它逐行扫描文档,一边扫描一边解析
a) 优点 : 处理速度快,可以处理大文件
b) 缺点 : 只能读,逐行后将释放资源.
3.PULL : Android内置的xml解析方式,类似sax.
SAX(推): 就像一座山,逐层推掉,想要的保留下来,不想要的就扔掉.
PULL(拉) : 把想要的数据拉过来,不需要的数据连拉都不拉,直接扔掉

常见的解析发开包:

● JAXP: sum公司提供支持DOM和SAX开发包

● JDom: dom4j兄弟

● jsoup: 一种处理 HTML特定解析开发包

● dom4j: 比较常见的解析开发包,hibernate底层采用(主要用这个)


【使用dom4j解析xml文档】

1.SAXReader对象(dom4j核心类)
利用方法 read(...)加载执行xml文档
2.Document对象
返回值 Element getRootElement() 获取根元素
3.Element对象
返回值 Element[] elements(...) 获取的指定名称的所有元素.可以不指定名称
element(...) 获得指定名称第一个子元素,可以不指定名称
getName() 获得当前元素的元素名
attributeValue(...) 获得指定属性名的属性值
elementText(...) 获得指定名称子元素的文本值
getText() 获得当前元素的文本内容

 

我的学习之路_第六章_迭代器,泛型

【Collection】类接口类所属包:java.util.CollectionCollection类是集合的最顶层的接口,定义了集合共性的方法.接口无法创建对象,使用多态的方式创建对象Collection<集合中的数据类型(泛型)>变量名=newArrayList<集合中的数据类型(泛型)&... 查看详情

算法导论_第十六章_动态规划_creatshare分享会

动态规划注:该篇为本人原创,转载请注明出处:http://blog.csdn.net/chudongfang2015/article/details/51590817 ——开心-.-个人对动态规划的理解:1.动态规划是一个付出额外空间来节省时间,就是所谓的空间换时间。2.动态规划储存每个状... 查看详情

我的学习之路_第十四章_反射

类的反射【获取class文件对象的三种方式】:●使用Object类中的方法getClass() Class<?>getClass()返回此Object的运行时类.●使用类名.class属性 每一个数据类型,基本数据类型和引用数据类型,Java都会为其设置一个class属性 例如:Classclas... 查看详情

我的学习之路_第十一章_字符流

【字符流】IO流的分类★字节流操作的文件不是文本文件字节输入流:InputStream抽象类FileInputStream操作文件的字节输入流字节输出流:OutputStream抽象类FileOutputStream操作文件的字节输出流★字符流 操作的文件是文本文件 字符输入流:Re... 查看详情

我的学习之路_第十七章_javautils

【BeanUtils工具类】javaBaen:Java和数据库所对应关系实体类表(Utils)-->类(User)表中的列-->类中字段(属性)表中的行-->根据类创建的对象javaBean包含:1.私有的成员变量 2.公共的getter/setter方法 3.空参数构造方法 4.toSting方法 5.实现序... 查看详情

鸟哥的linux私房菜——第十六章:学习shellscripts

...ShellScript         (shell写的脚本)1.1干嘛学习shellscripts?      ()1.2第一支script的撰写与执行1.3撰写shellscript的良好习惯建立  2.简单的shellscript练习:      (read-p date)3.善用判断式:3.1利用tes 查看详情

“全栈2019”java第十六章:下划线在数字中的意义

难度初级学习时间10分钟适合人群零基础开发语言Java开发环境JDKv11IntelliJIDEAv2018.3文章原文链接“全栈2019”Java第十六章:下划线在数字中的意义下一章“全栈2019”Java第十七章:赋值运算符和算术运算符学习小组加入同步学习小... 查看详情

《java编程思想》学习笔记——第十六章数组

    数组和其它种类的容器之间的区别有三方面:效率,类型和保存基本类型的能力。在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组就是一个简单的线性序列,这使得元素访问非常快... 查看详情

cprimerplus(第六版)第十六章编程练习答案(代码片段)

...成器,C++也要顺带看一下。--11.16CH16 Codeanswer1:我的头文件,后续会越写越多,感觉作者把这个放在第一条十分有意思。#ifndefPOZ_H_//检查是否已经包含我的头文件#definePOZ_H_#defineJQ(X)((X)%2?1:0)//奇偶奇数返回1偶数返... 查看详情

第十六章没有银弹---软件工程中的根本和次要问题

http://blog.csdn.net/zuochao_2013/article/details/73614151在未来的十年内,无论是在技术还是管理方法上,都看不出有任何突破性的进步,能够保证在十年内大幅度地提高软件的生产率、可靠性和简洁性。    一、摘要  ... 查看详情

第十六章创建高级联结

学习目的:了解另外一些联结类型,包括它们的含义和使用方法,如何对被联结的表使用别名和聚集函数。 使用表别名:别名除了用于列名和计算字段外,SQL还允许给表名起别名。这样做主要有两个理由:缩短SQL语句允许在... 查看详情

《风尚坐火箭学习vue》--第十六章:vue学习-补充npm命令

...,独有vue占一半我是风尚,让我们一起坐火箭去学习Vue第十六章:Vue学习-补充npm命令上章回顾:今天就补充这么多,都要给我会背啊!老头说。“还好还好,一般般吧,也就是背几个单词的事。继... 查看详情

我的学习之路_第二章_接口/多态

接口 (1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口。接口是功能的集合接口不能创建对象 (2)格式: 父接口: publicinterfaceInter { } 子类: publicclassInterImplimplementsInter { } (3)接口的特点... 查看详情

wpf学习第十六章键盘输入(代码片段)

原文:【WPF学习】第十六章键盘输入  当用户按下键盘上的一个键时,就会发生一系列事件。下表根据他们的发生顺序列出了这些事件:表所有元素的键盘事件(按顺序)    键盘处理永远不会像上面看到的这么简单。一... 查看详情

我的学习之路_第三十二章_httpservletrequest

HttpServletRequest取得请求行的信息:返回值:StringgetMethod()请求方式返回值:StringgetRequestURI()请求目标返回值:StringgetProtocol()使用协议取得请求头的信息:返回值:StringgetHeader(Stringname)传一个请求头的key值,返回一个请... 查看详情

我的学习之路_第二十二章_事务

JDBC事务【事务】作用:保证多条SQL语句,要么都执行成功,要么都执行失败.mysql数据库,执行SQL语句,自动开启事务,提交事务,回滚事务,把数据永久保存oracle数据库,执行SQL语句,手动开始会务,提交事务,回滚事务,把数据永久保存.Connectio... 查看详情

我的学习之路_第二十七章_jquery

jQueryjs类库 把常用对象或者方法封装起来,让我们写代码效率更高 1.jQuery 2.extjs【jQuery入门】 jQuery的引入: 通过script标签的src属性引入 入门:获取jQuery对象 $(选择器)==jQuery(选择器) 获取值 jQuery.val(); jQuery对象和Dom对象的转换 Do... 查看详情

我的学习之路_第四章_异常

一Object类equals方法:四则运算是不能操作引用类型的,而==可以操作引用类型,但是在任何时刻只要是用==比较引用类型,比较的永远都是地址值.返回类型Boolean比较两个对象是否相等,比较的是地址值Object的equals方法比较的是地址值,子... 查看详情